如何在乘客上使用apache / mod_rewrite生成规范URL?

如果她或他访问了我们的Rails应用程序,我们曾经有一个每.htaccess工作设置redirect访问者到一个规范的URL(为SEO的原因,减less双倍的内容):

RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^(.*) http://www.example.com/$1 [L,R=301] 

这实质上意味着:如果浏览器指向除example.com以外的其他内容,则将其redirect到www.example.com,此设置以前可用,但现在失败。 没有错误,如果访问不存在的内容,或者访问由rails应用程序提供的URI,它就不起作用。 如果我把一个静态文件或php文件放在RAILS_ROOT / public中,然后访问那个redirect工作。

我们的导轨应用程序使用乘客部署。 .htaccess文件放在RAILS_ROOT / public中。 自更新其中一个组件后,它似乎停止工作,但我们无法确切地知道这是什么时候。 乘客模块一段时间以来一直没有更新,所以我希望从原因列表中排除。

任何线索如何解决这个问题或通过另一种方式恢复function?

使用:Gentoo Linux,Apache 2.2.11,Passenger 2.0.6

乘客升级目前不是一个真正的select,因为它修改了符号链接parsing行为。

我遇到了同样的问题。 看起来像要么你需要创build一个单独的虚拟主机和redirect或做的应用程序重写。

有关更多详细信息,请参阅Apache Canonical Rewrite with Passenger(mod_rails) 。

希望能帮助你,因为它对我有帮助。