htaccess的重写规则冲突

炸玉米饼党

我将这两个规则并列

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)?$ category-groups.php?furl=$1 [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)-([^/\.]+)?$ product.php?id=$2&head=$1 [QSA]

这有效

/category-groups.php?furl=my-category-page
redirects to
/my-category-page

这行不通

/product.php?id=100&head=this-product
does not redirect to
/this-product-100

product.php页面实际上被反弹到category-groups.php页面。

我希望这是有道理的。我已经尝试了很多事情,但想不通解决

谢谢

林俊

您需要交换规则的顺序,并让正则表达式匹配数字:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)-([0-9]+)?$ product.php?id=$2&head=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)?$ category-groups.php?furl=$1 [QSA,L]

否则^([^/\.]+)?$将永远匹配所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章