我遇到了.htaccess文件的问题,已修复,现在我有另一个问题。我希望使用.htaccess文件清理网址。这是我目前的规则
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]
答案 0 :(得分:3)
如果网址为/about
,则第一条规则将转发至/index.php?a=page&b=about
,现在相同的/about
无法转发至/index.php?a=profile&b=about
。
但您可以将/profile/something
视为个人资料网址。
您可以拥有以下两条规则:
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]