Редирект без www на www: Как настроить переадресацию на домен БЕЗ «www»

Перенаправление с www на домен без www на Heroku

Содержание

  • Перенаправление с www на не-www (без HTTPS)
  • Перенаправление с www на не-www (с HTTPS)
  • Перенаправить HTTP на HTTPS

Эта статья содержит список наиболее распространенных сценариев перенаправления для приложения, размещенного на Heroku, а также некоторые решения для каждого сценария.

Эта статья содержит информацию о перенаправлениях и HTTPS. Если вы не знакомы с этой темой, вы можете сначала посмотреть, как перенаправления работают с HTTPS.

Перенаправление с www на не-www (без HTTPS)

Если ваше приложение использует HTTPS, проверьте раздел перенаправления с www на не-www с HTTPS.

В этом сценарии у вас есть приложение, размещенное на Heroku, с настроенным личным доменом (например, example.com ). Вы хотите перенаправить версию с www ( www.example.com ) на то же приложение Heroku (или наоборот). Приложение не использует HTTPS .

В этом случае самым простым решением является использование нашей службы перенаправления для перенаправления http://www.example.com от до http://example.com .

Для обработки перенаправления с помощью перенаправителя
  1. Перейдите в редактор записей и добавьте запись URL.

    • Добавьте поддомен перенаправления в поле Имя .
    • Добавьте URL-адрес целевого домена в поле URL-адрес .

    Например, чтобы перенаправить http://www.example.com на http://example.com :

    • Добавить www как Имя
    • Добавить http://example.com как URL-адрес
  2. Вот и все. Убедитесь, что перенаправление работает правильно.

В качестве альтернативы вы можете указать версию сайта как с www, так и без www на Heroku и обрабатывать перенаправление на уровне приложения.

Для обработки перенаправления на Heroku
  1. Добавьте оба имени хоста в приложение Heroku:

    • $ домены heroku: добавить example.com
    • $ домены heroku: добавить www.example.com
  2. Перейдите в редактор записей и добавьте две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку Heroku. Предположим, что конечная точка Heroku для приложения — awesome-application.herokuapp.com :

    .
    • Добавить запись ALIAS в пункт example.com в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку приложения awesome-application.herokuapp.com
    • Добавьте запись CNAME для точки www.example.com в Heroku. Имя записи —
      www
      , а поле Content — конечная точка приложения awesome-application. herokuapp.com
  3. В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.

Перенаправление с www на не-www (с HTTPS)

В этом сценарии у вас есть приложение, размещенное на Heroku, с настроенным личным доменом (например, example.com ). Вы хотите перенаправить версию с www ( www.example.com ) в то же приложение Heroku (или наоборот). Приложение также использует HTTPS .

В этом случае вы не можете использовать нашу службу перенаправления. Наилучшей стратегией является обработка перенаправления на уровне приложения с использованием сертификата, который распространяется как на имена хостов с www, так и без www.

Для перенаправления с использованием HTTPS необходимо иметь сертификат, который распространяется как на имена хостов с www, так и без www (корневой домен). Вы можете приобрести сертификат на одно имя за www или подстановочные сертификаты для * , чтобы покрыть корневой домен тем же сертификатом.

Для обработки перенаправления в Heroku
Для Heroku SSL
  1. Добавьте оба имени хоста в приложение Heroku:

    • $ домены heroku: добавить example.com
    • $ домены heroku: добавить www.example.com
  2. Закажите SSL-сертификат и добавьте его в Heroku(https://devcenter.heroku.com/articles/ssl):

    • $ сертификаты heroku: добавить server.crt server.key
  3. Перейдите в редактор записей и две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку SSL Heroku :

    • Добавьте запись ALIAS для точки example.com в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку SSL example. com.herokudns.com
    • Добавьте запись CNAME для точки www.example.com в Heroku. Имя записи — www , а поле Content — конечная точка SSL www.example.com.herokudns.com
  4. В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.

Для конечной точки SSL Heroku (устаревшая версия)
  1. Добавьте оба имени хоста в приложение Heroku:

    • $ домены heroku: добавить example.com
    • $ домены heroku: добавить www.example.com
  2. Включить конечную точку SSL Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную зашифрованному-приложению. herokussl.com .

  3. Закажите сертификат SSL и установите его на Heroku.

  4. Перейдите в редактор записей и две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку SSL Heroku :

    • Добавьте запись ALIAS для точки example.com в Heroku. Оставьте поле
      Имя
      записи пустым и установите в поле Содержимое конечную точку SSL зашифрованное-приложение.herokussl.com
    • Добавьте запись CNAME для точки www.example.com в Heroku. Имя записи — www , а поле Content — конечная точка SSL зашифрованное-приложение.herokussl.com
  5. В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.

Перенаправить HTTP на HTTPS

В этом сценарии у вас есть приложение, размещенное на Heroku, с настроенным личным доменом (например, example.com ). Вы хотите перенаправить HTTP-версию ( http://example.com

) на то же приложение Heroku под HTTPS ( https://example.com ).

В этом случае вы не можете использовать нашу службу перенаправления, поскольку невозможно указать один и тот же домен на уровне DNS для двух разных приложений на основе схемы HTTP/HTTPS. Лучшая стратегия — обрабатывать перенаправление на уровне приложения.

Для обработки перенаправления в Heroku
Для Heroku SSL
  1. Добавьте имена хостов в приложение Heroku:

    • $ домены heroku: добавить example.com
  2. Закажите сертификат SSL и установите его на Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную example. com.herokudns.com .

  3. Перейти к редактору записей и записей DNS для имени хоста, , указывающий на конечную точку SSL Heroku :

    • Если имя хоста является корневым доменом (например, example.com ): добавьте запись ALIAS для точки example.com в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку SSL example.com.herokudns.com
    • Если имя хоста является поддоменом (например, www.example.com ): добавьте запись CNAME в точку www.example.com в Героку. Имя записи — www , а поле Content — конечная точка SSL example.com.herokudns.com
  4. В вашем приложении перехватить входящий запрос. Если запрос исходит от HTTP, перенаправьте запрос на тот же домен, заменив HTTP на HTTPS. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.

Для конечной точки SSL Heroku (устаревшая версия)
  1. Добавьте имена хостов в приложение Heroku:

    • $ домены heroku: добавить example.com
  2. Закажите сертификат SSL и установите его на Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную зашифрованному-приложению.herokussl.com .

  3. Перейти к редактору записей и записей DNS для имени хоста, , указывающий на конечную точку SSL Heroku :

    • Если имя хоста является корневым доменом (например, example.com ): добавьте запись ALIAS для точки example.com в Heroku. Оставьте поле Имя записи пустым и установите в поле Содержимое конечную точку SSL зашифрованное-приложение.herokussl.com
    • Если имя хоста является поддоменом (например, www.
      example.com
      ): добавьте запись CNAME в точку www.example.com в Героку. Имя записи — www , а поле Content — конечная точка SSL зашифрованное-приложение.herokussl.com
  4. В вашем приложении перехватить входящий запрос. Если запрос исходит от HTTP, перенаправьте запрос на тот же домен, заменив HTTP на HTTPS. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.

Как перенаправить с www на без www с помощью Nginx

Если у вас есть веб-сайт или веб-приложение за доменом, ваши пользователи могут получить доступ к вашему веб-сайту по доменному имени и подписке www . домен.

Например, этот веб-сайт доступен через https://driesdeboosere.dev (без поддомена www) и https://www. driesdeboosere.dev (с поддоменом www ) .

Когда пользователь переходит на https://www.driesdeboosere.dev, он будет перенаправлен на https://driesdeboosere.dev ( без www ).

Для этого на сервере Nginx вам необходимо сделать следующее:

Настроить DNS

Чтобы настроить это перенаправление, www.driesdeboosere.dev на driesdeboosere.dev или наоборот, вы должна иметь запись A для домена (driesdeboosere.dev) и запись A для поддомена (www.driesdeboosere.dev).

  • Создайте запись A для своего доменного имени (например, driesdeboosere.dev ) и установите IP-адрес на общедоступный IP-адрес вашего сервера Nginx (например, 165.22.205.49 ).
  • Затем добавьте еще одну запись A для своего поддомена (например, www.driesdeboosere.dev ) и укажите тот же IP-адрес.

Это должно выглядеть примерно так:

Теперь ваши серверы доступны по домену с www и без www, но нам еще нужно настроить редирект. Это следующий шаг.

Настроить перенаправление Nginx

Мы можем сделать два перенаправления, перенаправление 301 или 302. Узнайте о разнице между ними.

В нашем случае нам нужна постоянная переадресация 301, чтобы весь трафик через www.driesdeboosere.dev перенаправлялся на driesdeboosere.dev. Мы настроим новый блок сервера Nginx, который указывает на ваш исходный блок сервера.

  • Войдите на свой сервер
  • Введите следующую команду:
 sudo nano /etc/nginx/conf.d/redirect.conf 

В зависимости от того, в каком направлении вы хотите перенаправить, используйте один из двух вариантов ниже.

Вариант 1. Перенаправление с www на домен без www

Если вы хотите перенаправить пользователей с домена с www на домен без www, вставьте в редактор следующую конфигурацию:

 server {
    имя_сервера www.driesdeboosere.dev;
    вернуть 301 $схема://driesdeboosere.dev$request_uri;
}
 

Сохраните и выйдите.

Чтобы изменения вступили в силу, перезапустите Nginx, введя следующую команду:

 sudo systemctl перезапустить nginx 

Проверьте перенаправление в браузере; вход на www.driesdeboosere.dev приведет к перенаправлению на driesdeboosere.dev.

Мы можем проверить это с помощью команды curl, введите в PowerShell следующее:

 curl -I www.driesdeboosere.dev 

Вы должны получить ответ 301 Moved Permanently , например:

 HTTP/1.1 301 Moved Permanently
Сервер: nginx/1.14.0 (Ubuntu)
Дата: Чт, 12 августа 2021 г., 13:04:32 по Гринвичу
Тип содержимого: текст/html
Длина контента: 194
Соединение: Keep-alive
Расположение: https://driesdeboosere.dev/ 

Вариант 2: Перенаправить без www на www

Если вы хотите перенаправить пользователей с домена без www на www, вставьте в редактор следующую конфигурацию:

 server {
    имя_сервера driesdeboosere.dev;
    вернуть 301 $scheme://www.driesdeboosere.dev$request_uri;
}
 

Сохраните и выйдите.

Чтобы изменения вступили в силу, перезапустите Nginx, введя следующую команду:

 sudo systemctl перезапустить nginx 

Проверьте перенаправление в браузере; вход на driesdeboosere.dev приведет к перенаправлению на www.driesdeboosere.dev.

Мы можем проверить это с помощью команды curl, введите в PowerShell следующее:

 curl -I driesdeboosere.dev 

Вы должны получить ответ 301 Moved Permanently , например:

 HTTP/1.1 301 Moved Permanently
Сервер: nginx/1.14.0 (Ubuntu)
Дата: Чт, 12 августа 2021 г., 13:04:32 по Гринвичу
Тип содержимого: текст/html
Длина контента: 194
Соединение: Keep-alive
Местонахождение: https://www.driesdeboosere.dev/ 

Вот и все! Ваше постоянное перенаправление Nginx теперь настроено правильно, и ваши пользователи смогут получить доступ к вашему веб-серверу через ваш домен без www и www.

Перенаправление 301 (постоянное)

Перенаправление 301 — это постоянное перенаправление.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *