Htaccess正则表达式重定向问题

时间:2011-05-11 20:27:14

标签: regex .htaccess

当我在htaccess文件中使用它时:

RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/ [R=301]

RewriteCond %{SCRIPT_FILENAME} !-f   
RewriteRule ^(.+)$ $1.php [NC,L] 

如果你去没有www的site.com,它会重定向到www.site.com/.php而不是www.site.com。

有什么想法?

谢谢!

4 个答案:

答案 0 :(得分:1)

也许这是旧版.htaccess的浏览器缓存?尝试清空缓存,或使用其他浏览器(或者可能是Priavte Browsing)。

答案 1 :(得分:1)

我认为根目录SCRIPT_FILENAME是“/”,这不会被视为有效文件并且会跳转!-f导致规则被应用。

由于/是正则表达式捕获的角色,它会将其重写为www.site.com/.php

答案 2 :(得分:1)

尝试通过添加“,L”添加“last”到规则:

RewriteRule ^(.*)$ http://www.site.com/ [R=301,L]

答案 3 :(得分:1)

我最后通过向RewriteRule添加$ 1来修复它^(。*)$ http://www.site.com/ $ 1 [R = 301,L]

感谢您的帮助。