[英]Pretty URL's for web application
我知道有100篇有關Mod Rewrite的文章,教程和手冊,但是我傾向於通過示例來學習,所以我要問的是快速進行漂亮的url轉換,我會繼續前進(所以我可以解剖它在做什么,所以我可以將其應用於其他人)
我有這個網址: http : //www.example.com/single.php?id=1
現在,如果它可以遵循與Stack Overflow相同的約定(其中id = 1是頁面的實際標題),那就太好了。
如果有幫助,我在PHP變量中有標題?
如果有人可以將以上內容轉換為以下內容,我將不勝感激: http : //www.example.com/single/here-is-my-cool-title (最后一點是動態的,取決於PHP變量)
那可能嗎?
因此,URL中實際上有帖子ID和標題,但他們只會使用帖子ID。 標題不太合適,因為可能有重復的帖子(相同的標題,不同的ID),標題更改等。對於此問題的網址:
/questions/5142095/pretty-urls-for-web-application
解決此問題的方法:
/single.php?id=5142095
重寫規則為:
RewriteRule ^questions/([0-9]*)/(.*)$ /single.php?id=$1
它所查找的是uri的開頭(在域之后) ^
,單詞questions
,任何長度的數字[[0
這尋找:
^
URI的開頭 questions
詞 /
[0-9]*
(例如1、123、1234等) /
.*
(即問題標題) $
URI的結尾 當字符匹配項(例如[0-9] *或。*)放在方括號中時,mod_rewrite會將匹配結果放入帶編號的dollar變量中。 在上面的規則中, [0-9]*
匹配任意數字(和任意長度的數字)並將其放入$1
。 第二個匹配項.*
匹配任何字符的任何長度,並將匹配項放入$2
。
您的應用程序將在規則的右側收到URI,其中美元變量被匹配項替換。
關於mod rewrite的文章數量,您是對的-就我個人而言,我不希望每次都添加額外的規則,然后擔心該規則是否會被捕獲...
為此,我更喜歡簡單地將批處理傳遞給根索引文件,然后讓服務器端決定如何處理。
與其他答案不同,此答案將為您提供針對特定問題的解決方案,而不是針對整個問題的解決方案。 僅僅因為它基於現實生活經驗,而不是純粹的理論。
該答案包含您需要的所有內容,包括從舊式url進行SEO友好的重定向,以及用於更改舊腳本以使其照常運行的代碼。
剩下要做的就是更改站點上的鏈接生成代碼。 我希望這沒什么大不了的。
您必須使用Apache的mod-rewrite,這是一個示例:
<Directory /www/yoursite/>
RewriteEngine On
RewriteRule ^single/?(.*)?/?$ article.php?id=$1 [L]
</Directory>
編輯:將整數標識符添加到重寫中是個好主意,例如:
RewriteRule ^single/([0-9]+)/?(.*)?/?$ article.php?id=$1&text=$2 [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.