簡體   English   中英

Web應用程序的漂亮URL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM