Как перенаправить http://vinderhimlen.dk в http://www.vinderhimlen.dk?
Heroku как перенаправить http://на http://www
Ответ 1
Лучше всего настроить перенаправление с вашим DNS-провайдером, поэтому это происходит задолго до того, как любой запрос достигнет вашего сервера. Из Центр Heroku Dev:
Переадресация поддомена приводит к постоянному переадресации 301 к указанному поддомену для всех запросов в голый домен, поэтому все текущие и будущие запросы правильно маршрутизируются, а полное имя хоста www отображается в поле местоположения пользователей.
DNSimple обеспечивает удобное перенаправление URL-адресов, видимое здесь, перенаправление с
heroku-sslendpoint.com
голый домен кwww.heroku-sslendpoint.com
субдомен.Для правильной конфигурации на Heroku субдомен www должен быть CNAME записывает ссылку на yourappname.herokuapp.com.
Это не просто DNSimple, который делает это. Мой DNS-провайдер 123 Reg, и они поддерживают его, но назовите его web forwarding
.
Ответ 2
Я бы рекомендовал сделать это намного раньше в жизненном цикле запроса. Если вы будете использовать Apache, вы добавите URL-адрес Rewrite в файл VirtualHosts. На Heroku вам нужно добавить промежуточное ПО промежуточного уровня.
Здесь пример другого пути (т.е. www.example.org
→ example.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/... - его метод для этого понятен, прост, эффективен и настраивается.