Rails / Passenger / Apache2:从www.domain.com重定向到domain.com

时间:2012-02-03 07:03:51

标签: ruby-on-rails apache passenger no-www

我通过VirtualHost配置文件中指定的“别名”指令托管域名为www.domain.com和domain.com的域名:

<VirtualHost *:80>
   ServerName domain.com
   ServerAlias www.domain.com
   DocumentRoot /var/www/domain.com/current/public/
   <Directory /var/www/domain.com/current/public/>
     AllowOverride all
     Options -MultiViews
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

现在http://www.domain.comhttp://domain.com转到相同的内容。 我需要将www.domain.com的每个请求重定向到domain.com以及www.domain.com/something到domain.com/something。

我只是想知道将所有流量从www.domain.com重定向到domain.com的最佳做法。是应该在Apache,Passenger还是Rails级别完成?如何? 301重定向?

任何想法都赞赏。 谢谢。

修改

现在工作配置就是这个(带有“永久重定向”):

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


<VirtualHost *:80>
  ServerName domain.com
  DocumentRoot /var/www/domain.com/current/public/
  <Directory /var/www/domain.com/current/public/>
    LimitRequestBody 4096000
    AllowOverride all
    Options -MultiViews
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

1 个答案:

答案 0 :(得分:3)

解决此问题的最佳方法是使用放置在虚拟主机中的Redirect指令。

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

  Redirect / http://example.com/
</VirtualHost>

<VirtualHost *:80>
  ServerName example.com
</VirtualHost>

请参阅此处:http://httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost