Apache-2.4

用於 SEO URL 的 htaccess mod_rewrite 被錯誤地重寫

  • September 8, 2016

我正在嘗試做的是擁有漂亮的 URL。在我希望整個字元串指向一個 PHP 腳本的情況下,我已經實現了這一點。我不。

所以,這行得通:example.com/login/1/2=>/index.php?go=login&do=1&msg=2

使用:

RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z_-]+)/?$ /index.php?go=$1 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2&q1=$3 [L,QSA]

現在假設我想要example.com/webapp/1/2/3=>webapp.php?1=1&2=2&3=3

通過在上面添加以下內容:

RewriteRule ^webapp/?$ /webapp.php [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2&q1=$3 [L,QSA]

導航到每次example.com/webapp重定向,剝離任何查詢字元串。index.php

如果我註釋掉第一個程式碼塊,然後導航到example.com/webapp我應該得到webapp.php的。

我在任何日誌中都沒有錯誤。通話期間的訪問日誌向webapp報告302

我究竟做錯了什麼?

通過在上面添加這個

您需要在上述內容之前添加它!

您的規則需要按照具體的順序排列。最具體的規則在前,最一般的規則在後。您的第一個規則塊包含最通用/包羅萬象的規則,因此這就是擷取請求並停止處理的地方。

我不確定你是否正確理解了漂亮 URL 的概念:https ://en.wikipedia.org/wiki/Semantic_URL 你打算做什麼肯定不會幫助你的 SEO。而且您不應該臨時重定向(302重定向)而是永久重定向

$$ R=301 $$.

引用自:https://serverfault.com/questions/801782