Apache-2.2

如何在乘客上使用 apache/mod_rewrite 生成規範 URL?

  • January 26, 2010

如果她或他訪問了我們的 rails 應用程序,我們曾經為每個 .htaccess 設置了一個工作設置,以將訪問者重定向到規範 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,它就不起作用。如果我在 RAILS_ROOT/public 中放置一個靜態文件或 php 文件並訪問它,但是重定向是有效的。

我們的 rails 應用程序是使用乘客部署的。.htaccess 文件位於 RAILS_ROOT/public 中。自從更新其中一個組件後,它似乎已經停止工作,但我們無法準確判斷那是什麼時候。乘客模組已經有一段時間沒有更新了,所以我想把它從原因列表中排除。

任何線索如何解決這個問題或通過另一種方式恢復功能?

使用:Gentoo Linux、Apache 2.2.11、Passenger 2.0.6

由於修改了符號連結解析行為,乘客升級目前並不是一個真正的選擇。

我遇到了同樣的問題;看起來您需要創建一個單獨的虛擬主機並重定向或在應用程序內進行重寫。

有關詳細資訊,請參閱Apache Canonical Rewrite with Passenger (mod_rails)

希望對你有幫助,就像對我一樣。

引用自:https://serverfault.com/questions/92644