Apache-2.2

重寫規則不起作用

  • July 9, 2013

我想轉換這個網址

http://ts.thebenamorgroup.com/g2g/category.php?cate=mens

到:

http://ts.thebenamorgroup.com/g2g/category/cate/mens/   

我有這個規則,但它不起作用:

Options +FollowSymLinks
RewriteEngine on
RewriteRule category/cate/(.*)/ category.php?cate=$1
RewriteRule category/cate/(.*) category.php?cate=$1

你有向後的邏輯:

RewriteRule category/cate/(.*)/ category.php?cate=$1
RewriteRule category/cate/(.*) category.php?cate=$1

這將嘗試重寫category/cate/mens/category.php?cate=mens

你不能只是反轉它,因為 RewriteRule 不能對查詢字元串進行操作,所以你還需要使用 RewriteCond :

RewriteCond %{QUERY_STRING}     cate=(.*)
RewriteRule /category.php       category/cate/%1

請注意使用%1to 引用 in 的反向引用RewriteCond(而不是$1用於 backref in RewriteRule

RewriteCond %{QUERY_STRING} cate=(.*)
RewriteRule g2g/category.php g2g/category/cate/%1? [L]

這將完全符合您的要求。注意“?” in RewriteRule 停止再次附加查詢字元串 (?cate=mens)。

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