2011-05-11 86 views
3

当我在我的htaccess文件使用:.htaccess的正则表达式问题重定向

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

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

如果你去site.com加www重定向到www.site.com/.php而不是www.site。 COM。

有什么想法?

谢谢!

回答

1

我结束了加$ 1重写规则^修复它(。*)$ http://www.site.com/ $ 1 [R = 301,L]

感谢您的帮助。

1

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

+0

我已经这样做了,我认为它与这个RewriteCond%{SCRIPT_FILENAME}有关!-f RewriteRule ^(。+)$ $ 1.php [NC,L] – 2011-05-11 20:44:25

1

我认为在根SCRIPT_FILENAME将是“/”,这不会被认为是一个有效的文件,并绊倒!-f导致规则被应用。

由于/是正则表达式抓到一个字符就会重写它www.site.com/.php

+0

那么我该如何解决它? – 2011-05-12 04:26:55

+0

我认为这会实现你要找的东西? RewriteCond%{SCRIPT_FILENAME}!-d RewriteCond%{SCRIPT_FILENAME}!-f RewriteRule ^(。+)$ $ 1.php [NC,L] – 2011-05-12 16:24:10

1

尝试添加“最后”加治“L”:

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