Apache2配置导致重定向循环

时间:2013-08-25 12:07:07

标签: wordpress apache redirect apache2

我正在尝试将我的网站设置为仅使用www,非www应永久重定向到www。 This answer建议使用两个虚拟主机,但这会导致我进入重定向循环。

以下是该网站的配置:

<VirtualHost *:80>
  ServerName  www.mydomain.com

  DirectoryIndex index.html index.php
  DocumentRoot /home/me/sites/mydomain.com/htdocs

  # Log file locations
  LogLevel warn
  ErrorLog  /home/me/sites/mydomain.com/logs/error.log
  CustomLog /home/me/sites/mydomain.com/logs/access.log combined
</VirtualHost>

<VirtualHost *:80>
  ServerName mydomain.com
  Redirect permanent / http://www.mydomain.com/
</VirtualHost>

当我访问该网站的非www版本时,它成功重定向到www版本,但Chrome随后告诉我有一个重定向循环。

起初我认为在我的文档根目录中可能是.htaccess但是在删除该文件之后它仍然会发生。它只是一个简单的Wordpress网站。

任何人都可以看到导致这种情况发生的配置有问题吗?如果没有,我怎样才能缩小原因?

1 个答案:

答案 0 :(得分:1)

对于非www,您不需要单独的VirtualHost条目,而是使用ServerAlias。另外要重定向到www只需使用这样的规则:

<VirtualHost *:80>
  ServerName  www.mydomain.com
  ServerAlias mydomain.com 
  DirectoryIndex index.html index.php
  DocumentRoot /home/me/sites/mydomain.com/htdocs

  # Log file locations
  LogLevel warn
  ErrorLog  /home/me/sites/mydomain.com/logs/error.log
  CustomLog /home/me/sites/mydomain.com/logs/access.log combined

  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>