ОБНОВЛЕНИЕ: По-видимому, я работал, более старая версия Пассажира (не знайте, как я пропустил это). Я в настоящее время выполняю Пассажира 2.2.9 и помещаю оригинал, переписывают в работах vhost как ожидалось (и желаемый)!
Групповое обсуждение Google обходных решений для более старых версий Пассажира: http://groups.google.com/group/phusion-passenger/browse_thread/thread/5e019e5d65beb54f
Для более старых версий:
Разместите www
как отдельный vhost и перенаправление (предложение Jonathan Clarke)
RedirectMatch 301 ^(.*)$ http://mydomain.com$1
Сделайте переписывание в приложении:
# before_filter :trim_www
def trim_www
if request.subdomains.first == "www"
if request.subdomains == ["www"]
redirect_to "#{request.protocol}#{request.
domain}#{request.port_string}#{request.path}"
else
subdomains = request.subdomains.shift.join(".")
subdomains << "." unless subdomains.blank?
redirect_to
"#{request.protocol}#{subdomains}#{request.domain}#{request.port_string}#{r equest.path}"
end
end
end
(Опоры к RSL в исходном сообщении для этого кода)
Попытайтесь заменить ту последнюю строку следующим:
RewriteRule ^ (.*) http://mydomain.com % {REQUEST_URI} [R=permanent, QSA, L]
Если это все еще перестало работать, я рекомендую использовать отдельный виртуальный хост к URL www.mydomain.com, который просто делает Переписывание на mydomain.com. Пассажир не играет хорошо с mod_rewrite.
Надеюсь, это поможет.
RedirectMatch 301 ^(.*)$ http://mydomain.net$1
). Это работает, но это действительно неэлегантно и очень неподобно направляющей. Нет ли действительно никакой лучший путь??
– neezer
26 January 2010 в 08:30