2017-09-22 64 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

相关问题