2012-02-03 110 views
1

我通过在VirtualHost配置文件中指定的“别名”指令托管一个域,其中包含www.domain.com和domain.com两个地址:Rails/Passenger/Apache2:从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> 

回答

3

解决这个最好的方法是使用跳转指令放置在虚拟主机中。

<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

+0

差不多,配置你的建议引起了重定向循环。为了接受你的答案,你应该在第一个VirtualHost中将ServerAlias与ServerName交换,而不是删除ServerAlias。比它的工作!我将编辑我的答案以显示新的工作配置。感谢提示。 – Darme 2012-02-03 07:38:27

+0

@DuccioArmenise更新。谢谢。 – 2012-02-03 07:44:36

+0

那么“重定向永久”呢?它可能更适合搜索引擎优化,不是吗?你知道吗?我正在测试它... – Darme 2012-02-03 07:51:47

相关问题