如何使用 Passenger 上的 apache/mod_rewrite 生成规范 URL?

如何使用 Passenger 上的 apache/mod_rewrite 生成规范 URL?

我们曾经对 .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)更多细节。

希望这对你有帮助,就像对我有帮助一样。

相关内容