在 .htacces 中添加第二个重写规则不起作用



我是新的。htaccess,所以这似乎是一个明显的问题我有以下重写规则

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} s/+Category.php?Category=([^s&]+) [NC]
RewriteRule ^ %1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ Category.php?Category=$1 [L,QSA]

我想添加一个类似的规则到产品页面,像这样:

RewriteCond %{THE_REQUEST} s/+product.php?id=([^s&]+) [NC]
    RewriteRule ^ %1? [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/?$ product.php?id=$1 [L,QSA]

然而,当这两个在。htaccess文件中,它不工作,只有第一个规则将工作,第二个规则将给出一个错误。

为了进一步说明,可以这样设置规则:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} s/+Category.php?Category=([^s&]+) [NC]
RewriteRule ^ %1? [R=301,L]
RewriteCond %{THE_REQUEST} s/+product.php?id=([^s&]+) [NC]
RewriteRule ^ %1/p/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/p/?$ product.php?id=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ Category.php?Category=$1 [L,QSA]

最新更新