mod_rewrite在没有www的情况下访问站点时添加.php扩展名。字首

时间:2012-06-27 13:45:25

标签: php apache .htaccess

我的.htaccess文件如下:

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扩展名只会导致错误。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我认为问题出在你的最后一行。执行第一个规则后,Mod Rewrite不会停止。尝试将最后一条规则修饰符添加到重定向规则:

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

答案 1 :(得分:0)

你需要告诉apache在301重定向后停止处理规则,通过添加L来实现这一点 - 例如:

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

除此之外:如果您在第一行启用了多视图,并且删除了最后3行,则会更好;)

答案 2 :(得分:0)

从.htaccess中移除以下行并尝试..

RewriteRule ^(.*)$ $1.php