我有这两个规则彼此相邻
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页面。
我希望这是有道理的。我尝试过很多东西,但无法解决这个问题
由于
答案 0 :(得分:1)
您需要交换规则的顺序并使正则表达式匹配数字:
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]
否则^([^/\.]+)?$
将始终匹配所有内容。