1

我有一个 .htaccess 文件的问题,已经修复,现在我有另一个问题。我希望使用 .htaccess 文件清理 url。这是我目前的规则

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?a=page&b=([^&]+)[\s&] [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteRule ^([^/.]+)/?$ index.php?a=page&b=$1 [L,NC,QSA]

这将清理页面链接以指向具有包含a=page. 它完美地工作。我试图添加另一个规则,以便它适用于包含a=rpofile但它不起作用的链接。但是,如果我删除上面的代码,它确实有效。看来我不能同时运行这两个规则。以下是a=profile上述代码的版本。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?a=profile&u=([^&]+)[\s&] [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteRule ^([^/.]+)/?$ index.php?a=profile&u=$1 [L,NC,QSA]
4

1 回答 1

3

如果 URL 是,/about那么第一条规则将转发到/index.php?a=page&b=about现在相同的/about不能转发到/index.php?a=profile&b=about

但是您可以/profile/something被视为个人资料 URL。

您可以有 2 条规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?a=page&b=([^\s&]+)[\s&] [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteRule ^([^/.]+)/?$ /index.php?a=page&b=$1 [L,NC,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?a=profile&u=([^\s&]+)[\s&] [NC]
RewriteRule ^ /profile/%1? [R=301,L]
RewriteRule ^profile/([^/.]+)/?$ /index.php?a=profile&u=$1 [L,NC,QSA]
于 2013-09-22T11:09:37.947 回答