2017-09-22 106 views
1

我想設置一些簡單的重寫規則,但是我輸入的任何網址都會每次都進入第一個網址。.htaccess重寫規則無法正常工作

RewriteRule ^categories/(.*/)?([0-9]+)?/$ categories.php?category_id=$2 [QSA,NC,L] 

RewriteRule ^categories/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/$ sub-categories.php?category_id=$3 [QSA,NC,L] 

RewriteRule ^categories/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/$ product.php?product_id=$4 [QSA,NC,L] 

我基本上要:

domain.co.uk/categories/category-name/1/去categories.php domain.co.uk/categories/category-name/sub- category-name/1 /轉到子分類.php domain.co.uk/categories/category-name/sub-category-name/product-name/1/去產品.php

每個網址末尾的1將是任一類別或產品的ID。

任何幫助將不勝感激。

+0

這些看起來像他們會匹配所有樣品,'categories/[^ /] + /(\ d)/ $ | categories/[^ /] + /([az- ] +)/(\ d)/ $ |類別/ [^ /] +/[AZ - ] + /([AZ - ] +)/(\ d)/ $'。 – chris85

回答

1

您在規則中將所有捕獲的組視爲可選組。這樣做:

RewriteRule ^categories/[\w-]+/(\d+)/?$ categories.php?category_id=$1 [QSA,NC,L] 

RewriteRule ^categories/[\w-]+/[\w-]+/(\d+)/?$ sub-categories.php?category_id=$1 [QSA,NC,L] 

RewriteRule ^categories/[\w-]+/[\w-]+/[\w-]+/(\d+)/?$ product.php?product_id=$1 [QSA,NC,L] 
+1

工作完美。謝謝 – user3068032

相關問題