我们正在使用以下两行
RewriteRule (.+?)/(.+?)\.php http://%{HTTP_HOST}/$2.php [L,R=301]
RewriteRule (.+?)/(.+?)\.html http://%{HTTP_HOST}/$2.html? [L,R=301]
这是以
的形式重定向某个错误的网址www.site.com/something/page.php
www.site.com/something/page.php?a=b
www.site.com/something/page.html
作为测试,它看起来有效,但我在分析中遇到了一些错误,其中对于某些网址,它显示它被称为/?a = b。我不明白何时会出现这种情况。
其次我有像admin / login.php这样的文件夹。当我使用上面的代码时,显然这个url被重定向为login.php,我不想要。有没有办法对3个文件夹admin,t4,t5进行双向传递。我真的很紧急,因为我需要纠正索引问题。你能帮忙吗..
类似的调整我需要第二个重写语句
答案 0 :(得分:0)
您可以使用此代码:
RewriteEngine On
# skip these 3 folders
RewriteRule ^(admin|t4|t5)(/|$) - [L,NC]
# existing rules
RewriteRule (.+?)/(.+?)\.php /$2.php [L,R=301]
RewriteRule (.+?)/(.+?)\.html /$2.html? [L,R=301]
# redirect /?a=b to /
RewriteCond %{QUERY_STRING} .+
RewriteRule ^$ /? [L,R=301]