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

发布于 2025-01-02 06:33:53 字数 1354 浏览 2 评论 0原文

我通过 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>

I'm hosting a domain with both addresses www.domain.com and domain.com through an "alias" directive specified in the VirtualHost config file:

<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>

Now http://www.domain.com and http://domain.com go to the same content.
I need to redirect every request for www.domain.com to domain.com as well as www.domain.com/something to domain.com/something.

I'm just wondering on best practice for redirecting all traffic from www.domain.com to domain.com. Is should be done at Apache, Passenger or Rails level? and how? 301 redirect?

Any ideas appreciated.
Thank you.

EDIT:

The working configuration is now this one (with "Redirect permanent"):

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归途 2025-01-09 06:33:53

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

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

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

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

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

The very best way to solve this is by using Redirect directive placed in a virtual hosts.

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

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

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

Refer here: http://httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文