www.example.com/category/sub_category/ .htaccess文件中的重新规则存在问题。
我当前的.htaccess文件看起来像这样。
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9]+)$ products.php?cat=$1&id=$2 [NC,L]
RewriteRule ^([^/]*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_categories.php?cat=$2&id=$3 [NC,L]
RewriteRule ^(.*)/(.*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_details.php?cat=$3&id=$4 [NC,L]
RewriteRule ^([0-9]+)$ gallery.php?id=$1 [NC,L]
我正在尝试创建以下内容的网址。
www.example.com/product_name/1
www.example.com/category/sub_category/21
www.example.com/category/sub_category/product_name/233
www.example.com/gallery/872
www.example.com/gallery/872重定向到www.example.com/category/sub_category/872而不是gallery.php?id = 872
修改:更正的网址从www.example.com/gallery/872到www.example.com/category/sub_category/872。
答案 0 :(得分:2)
您的问题是第一条规则匹配,最后一条规则永远不会被应用......
RewriteEngine on
RewriteRule ^gallery/([0-9]+)/?$ gallery.php?id=$1 [NC,L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9]+)$ products.php?cat=$1&id=$2 [NC,L]
RewriteRule ^([^/]*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_categories.php?cat=$2&id=$3 [NC,L]
RewriteRule ^(.*)/(.*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_details.php?cat=$3&id=$4 [NC,L]
经验法则:首先特定的例外,然后更一般的规则。
如果您还在正则表达式模式中同时指定小写和大写字母,则NC
标志没有意义。它是或者,而不是和。
(注意:我还包括了@anubhava在他的回答中发布的更正)
答案 1 :(得分:0)
您的上一条规则需要正则修改,因为您匹配/gallery/872
并且您的模式只匹配1位或更多位数。
RewriteRule ^gallery/([0-9]+)/?$ gallery.php?id=$1 [NC,L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9]+)$ products.php?cat=$1&id=$2 [QSA,L]
RewriteRule ^([^/]*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_categories.php?cat=$2&id=$3 [QSA,L]
RewriteRule ^(.*)/(.*)/([0-9a-zA-Z_-]+)/([0-9]+)$ product_details.php?cat=$3&id=$4 [QSA,L]
此外,您需要像我上面所示记录您的规则。