【问题标题】:How can I force 'www' subdomain w/ Apache2 + Rails + Phusion Passenger?如何使用 Apache2 + Rails + Phusion Passenger 强制“www”子域?
【发布时间】:2010-12-26 03:54:05
【问题描述】:

我的客户希望使用 301 重定向在他们的网站上强制使用“www”子域。所以 'example.com/something' 解析为 'www.example.com/somthing' 等等。

我想要做的只是将它添加到我的虚拟主机文件中:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

我还确保通过以下方式启用了 mod 重写:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

我目前努力的结果基本上看起来是成功的。 Apache 重新启动,一切都按预期工作,除了重写没有发生。所以 'www.example.com' 和 'example.com' 都可以解析。浏览器没有被重定向到“www.example.com”。有任何想法吗?我已经尝试重新加载配置并重新启动 apache 几次,但我似乎无法让重写规则正常工作。我是否通过将它们放置在虚拟主机而不是 .htaccess 文件中来将它们设置在错误的位置?

这里的任何建议都会很有用。我完全迷惑了。

【问题讨论】:

    标签: ruby-on-rails mod-rewrite apache2 passenger vhosts


    【解决方案1】:

    把它放在你的主 VirtualHost 条目下面:

    <VirtualHost *:80>
        ServerName example.com
        RedirectMatch permanent ^/(.*) http://www.example.com/$1
    </VirtualHost>
    

    您的主 VirtualHost 应该有一个 ServerName www.example.com 条目,并且没有别名或重定向。此外,此重定向不需要 mod_rewrite。

    【讨论】:

    • 谢谢!这正是我想要的!
    • 酷,我很高兴得知此重定向不需要 mod_rewrite。
    猜你喜欢
    • 2013-01-13
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多