将非www重定向到www无效

时间:2011-03-02 01:59:56

标签: apache .htaccess mod-rewrite redirect

我使用virtualmin设置虚拟服务器,它没有创建.htaccess文件,所以我在public_html文件夹中创建了一个并放入以下代码

RewriteEngine On
RewriteCond % ^megahotserved.com [NC]
RewriteRule ^(.*)$ http://www.megahotserved.com/$1 [L,R=301]

重新启动apache并没有效果,然后尝试

<VirtualHost *:80>
    ServerName megahotserved.com
    Redirect permanent / http://www.megahotserved.com/
</VirtualHost>
在httpd.conf文件中,当我重新启动apache firefox时出现错误

  

页面未正确重定向。

     

Firefox检测到服务器正在以永远无法完成的方式重定向此地址的请求。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

您的代码是正确的,您只需要按照我引用http://httpd.apache.org/docs/current/mod/mod_rewrite.html

的下一段说明
  

默认情况下,虚拟主机不会继承主服务器上下文中的mod_rewrite配置设置。要使主服务器设置适用于虚拟主机,必须在每个部分中放置以下指令:

RewriteEngine On
RewriteOptions Inherit

答案 1 :(得分:0)

好像你没有正确匹配www.地址的VirtualHost,因此对http://www.megahotserved.com/的请求正在点击同一个虚拟主机并进入循环重定向。所以重定向工作正常;你只需要修复服务器配置的不同部分。

答案 2 :(得分:0)

同意上述内容,并添加一小部分内容:最好将非www重定向到www而不是重写,否则您将拥有整个网站的两个完整视图(“副本”);每个页面都有两个URL,而不是一个规范的URL。这对搜索引擎和其他事情都不利。