我们曾经对 .htaccess 进行过一个工作设置,当访问者访问我们的 rails 应用程序时,会将访问者重定向到规范的 URL(出于 SEO 原因,减少重复内容):
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*) http://www.example.com/$1 [L,R=301]
这本质上意味着:如果浏览器指向 example.com 以外的其他内容,则通过 301 将其重定向到 www.example.com。此设置以前可以工作,但现在失败了。没有错误,只是在访问不存在的内容或访问 rails 应用程序提供的 URI 时不起作用。如果我将静态文件或 php 文件放在 RAILS_ROOT/public 中并访问该文件,则重定向可以正常工作。
我们的 rails 应用程序是使用 Passenger 部署的。.htaccess 文件位于 RAILS_ROOT/public。它似乎在更新其中一个组件后停止工作,但我们无法准确判断是什么时候。Passenger 模块已经有一段时间没有更新了,所以我很想将其从原因列表中排除。
有什么线索可以解决这个问题或者通过其他方式恢复功能吗?
使用:Gentoo Linux,Apache 2.2.11,Passenger 2.0.6
由于符号链接解析行为已修改,乘客升级目前实际上不是一个选择。
答案1
我遇到了同样的问题;看起来你要么需要创建一个单独的虚拟主机并重定向,要么在应用程序内进行重写。
看Apache Canonical 使用 Passenger 进行重写(mod_rails)更多细节。
希望这对你有帮助,就像对我有帮助一样。