htaccess只显示url的最后部分和尾部斜杠

时间:2014-01-13 20:24:04

标签: .htaccess

我们正在使用以下两行

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进行双向传递。我真的很紧急,因为我需要纠正索引问题。你能帮忙吗..

类似的调整我需要第二个重写语句

1 个答案:

答案 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]