Установка пользовательского домена на Heroku с CNAME перенаправляет для www [закрытого] субдомена

8
задан Tunaki 5 September 2016 в 18:23
поделиться

1 ответ

CNAME - это не перенаправление, а только каноническое имя для вашего домена. Это означает, что он ведет себя так же, как домен, на который он указывает (myapp.com в вашем случае). Ваш браузер получает тот же IP-адрес, что и у myapp.com, и посылает на него запрос.

Перенаправления выполняются на уровне HTTP или выше. Вы можете сделать это, например, в своем приложении или создать другое простое приложение только для этого.

Вот простой пример для выполнения редиректа непосредственно в вашем приложении:

# in your ApplicationController
before_filter :strip_www

def strip_www
  if request.env["HTTP_HOST"] == "www.myapp.com"
    redirect_to "http://myapp.com/"
  end
end

Или вы можете использовать rails metal, который сделает то же самое, но гораздо быстрее:

# app/metal/hostname_redirector.rb
class HostnameRedirector
  def self.call(env)
    if env["HTTP_HOST"] == "www.myapp.com"
      [301, {"Location" => "http://myapp.com/"}, ["Found"]]
    else
      [404, {"Content-Type" => "text/html"}, ["Not Found"]]
    end
  end
end

Вы также можете использовать Regex для соответствия всем запросам с www. перед именем хоста.

9
ответ дан 5 December 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: