Force www. в рельсах - PullRequest
       9

Force www. в рельсах

3 голосов
/ 16 декабря 2009

Обычно я использую файлы .htaccess, чтобы заставить домен использовать www. (т.е. http://www.example.com вместо http://example.com):

#Options +Indexes
RewriteEngine on
RewriteBase /

Redirect permanent "www.example.com" "http://www.example.com"
Redirect permanent "example.com" "http://www.example.com"

Однако это не работает в приложении rails. Какова альтернатива рельсам?

Ответы [ 3 ]

6 голосов
/ 16 декабря 2009

Проверьте это

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

Взято из http://www.htaccesseditor.com/en.shtml#a_WWW

Примечание: Файл .htaccess следует поместить в общую папку проекта Rails.

1 голос
/ 16 декабря 2009

Вы можете сделать это с Металлом

./script/generate metal www_redirect

А потом в app / metal / www_redirect.rb

# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)

class WwwRedirect
  def self.call(env)
    if env["SERVER_NAME"] !~ /^www\./
      [302, {"Content-Type" => "text/html", "Location" => "http://www.#{env["HTTP_HOST"]}#{env["REQUEST_PATH"]}"}, ["Redirecting..."]]
    else
      [404, {"Content-Type" => "text/html"}, ["Not Found"]]
    end
  end
end
1 голос
/ 16 декабря 2009

Если вы используете более новую версию Rails, альтернативой использованию Apache mod_rewrite будет использование промежуточного программного обеспечения Canonical Host Rack .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...