Подтвердить что ты не робот

Heroku как перенаправить http://на http://www

Как перенаправить http://vinderhimlen.dk в http://www.vinderhimlen.dk?

4b9b3361

Ответ 1

Лучше всего настроить перенаправление с вашим DNS-провайдером, поэтому это происходит задолго до того, как любой запрос достигнет вашего сервера. Из Центр Heroku Dev:

Переадресация поддомена приводит к постоянному переадресации 301 к указанному поддомену для всех запросов в голый домен, поэтому все текущие и будущие запросы правильно маршрутизируются, а полное имя хоста www отображается в поле местоположения пользователей.

DNSimple обеспечивает удобное перенаправление URL-адресов, видимое здесь, перенаправление с heroku-sslendpoint.com голый домен к www.heroku-sslendpoint.com субдомен. enter image description here

Для правильной конфигурации на Heroku субдомен www должен быть CNAME записывает ссылку на yourappname.herokuapp.com.

Это не просто DNSimple, который делает это. Мой DNS-провайдер 123 Reg, и они поддерживают его, но назовите его web forwarding.

Ответ 2

Я бы рекомендовал сделать это намного раньше в жизненном цикле запроса. Если вы будете использовать Apache, вы добавите URL-адрес Rewrite в файл VirtualHosts. На Heroku вам нужно добавить промежуточное ПО промежуточного уровня.

Здесь пример другого пути (т.е. www.example.orgexample.org). Я не думаю, что у вас появятся большие проблемы с его заменой на ваш usecase.

Таким образом, запросы не будут отображаться в вашем журнале и не нуждаются во всех разборах запросов Rails.

Ответ 3

Мое решение:

Terminal:

heroku addons:add custom_domains:basic
heroku domains:add www.vinderhimlen.dk
heroku domains:add vinderhimlen.dk

И затем (http://devcenter.heroku.com/articles/custom-domains):

class ApplicationController
  before_filter :ensure_domain

  APP_DOMAIN = 'www.vinderhimlen.dk'

  def ensure_domain
    if request.env['HTTP_HOST'] != APP_DOMAIN
      # HTTP 301 is a "permanent" redirect
      redirect_to "http://#{APP_DOMAIN}", :status => 301
    end
  end
end

Ответ 4

Предполагая, что вы используете контроллер действий, просто используйте redirect_to:

redirect_to "http://www.vinderhimlen.dk"

Ответ 5

Вы также должны добавить домен www.

heroku domains:add www.vinderhimlen.dk

Ответ 6

Обычно вы делаете это на уровне HTTP-сервера, используя что-то вроде модуля Apache mod_rewrite, чтобы оно происходило до того, как запрос даже достиг стека Rails. Тем не менее, Heroku не дает вам доступа к их конфигурации HTTP-сервера, поэтому необходима альтернатива.

Я бы рекомендовал взглянуть на Преломление, которое является промежуточным промежуточным программным обеспечением, предназначенным для замены mod_rewrite. Он позволяет вам писать правила перезаписи с использованием старого старого кода Ruby, и он все же быстрее, чем использование Rails для задачи.

Ответ 7

См. ответ "Правосудие" в этой статье fooobar.com/info/284779/... - его метод для этого понятен, прост, эффективен и настраивается.