Nano Hash - криптовалюты, майнинг, программирование

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

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



Ответы:


1

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

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

DNSimple предоставляет удобную переадресацию URL-адресов, показанную здесь, перенаправляя с открытого домена heroku-sslendpoint.com на поддомен www.heroku-sslendpoint.com. введите здесь описание изображения

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

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

07.09.2012
  • Большое спасибо за ваш комментарий - я использовал DNSSimple, так что это сработало для меня как шарм! 27.09.2012
  • Возможно, стоит отметить, что обратный путь (перенаправление всех запросов www. на голый домен) работает точно так же. 30.01.2013
  • Вы должны знать, что иногда при работе с SSL такое перенаправление не работает. В частности, DNSimple не может работать с переадресацией типа example.com =› example.com. См. support.dnsimple.com/articles/url-redirect-ssl. 25.08.2013

  • 2

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

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

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

    22.03.2011
  • Heroku не дает вам доступа к файлу vhosts. 22.03.2011
  • @John: Вот почему строки 2-5 объясняют, как это сделать на Heroku с помощью промежуточного программного обеспечения. 22.03.2011
  • Мне нравится это промежуточное ПО: github.com/tylerhunt/rack-canonical-host Просто установите домен включая www. как канонический. И whatever-you-use.herokuapp.com тоже перенаправит туда без лишних усилий. 08.09.2012

  • 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
    
    22.03.2011
  • если вы также хотите сохранить содержимое запроса после хоста: redirect_to http://#{APP_DOMAIN}#{request.env['REQUEST_PATH']}, :status =› 301 28.02.2012
  • для этого лучше использовать промежуточное ПО стойки. например, blog.dynamic50.com/2011/02/22/ 12.03.2012
  • Гораздо лучше сделать это через DNS. 28.01.2014

  • 4

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

    redirect_to "http://www.vinderhimlen.dk"
    
    22.03.2011
  • Да, на контроллере действий. Взгляните на ссылку, которую я разместил. 22.03.2011
  • Я добавил redirect_to vinderhimlen.dk в свой контроллер приложения, но все равно вижу это сообщение Heroku | Нет такого приложения 22.03.2011
  • Вам нужно добавить это имя хоста без www в Heroku. devcenter.heroku.com/articles/custom-domains 22.03.2011

  • 5

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

    heroku domains:add www.vinderhimlen.dk

    22.03.2011

    6

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

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

    22.03.2011

    7

    См. ответ Джастиса в этой SO статье - его метод для этого ясен , простой, эффективный и настраиваемый.

    22.03.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..