2012-06-20 83 views
5

我的.htaccess文件如下:mod_rewrite的添加php扩展

Options -Multiviews 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

,我遇到的问题是,当我尝试不带www访问我的网站。前缀,.php扩展名被添加到地址,这通常会导致问题。例如,如果我尝试使用地址example.com访问我的主页,则该地址将转换为www.example.com/.php。我想要www。要添加,但最后添加的.php扩展名只会导致错误。我该如何解决?

+0

这是不安全的重写方式“/x"->"/x.php” –

+2

RewriteRule不能在浏览器地址栏中更改URL。您需要'[R]'(重定向)标志将浏览器重定向到新的URL。 –

+1

什么是删除php扩展名? –

回答

1

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

卸下L向[R=301,L],意思是 “最后”,意思是 “停止这一个后处理的RewriteRules”。

301也意味着“永久重定向”。在这种情况下,您的浏览器将记住永久重定向。是否有可能您有一个版本的重写规则,转到您的URL,然后更改它?清除缓存或尝试其他浏览器。

+0

我试过这样做,但没有奏效。问题仍然存在:当我进入mysite.com/main时,我立即转到www.mystie.com/main.php,但我不想要.php扩展名。 – user532493

+0

编辑我的答案。注意301,重定向可以缓存在浏览器中。 –

+0

谢谢你的帮助。我尝试了三种不同的浏览器并清除了所有这些缓存,但仍然遇到同样的问题。 – user532493

0

文件第4行的“L”标志表示“last”,即它不会处理更多规则。尝试删除L.

+0

我试过这样做,但没有奏效。问题仍然存在:当我进入mysite.com/main时,我立即转到www.mystie.com/main.php,但我不想要.php扩展名。 – user532493