Перенаправление с 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
.Для обработки перенаправления с помощью перенаправителя
Перейдите в редактор записей и добавьте запись URL.
- Добавьте поддомен перенаправления в поле Имя .
- Добавьте URL-адрес целевого домена в поле URL-адрес .
Например, чтобы перенаправить
http://www.example.com
наhttp://example.com
:- Добавить
www
как Имя - Добавить
http://example.com
как URL-адрес
Вот и все. Убедитесь, что перенаправление работает правильно.
В качестве альтернативы вы можете указать версию сайта как с www, так и без www на Heroku и обрабатывать перенаправление на уровне приложения.
Для обработки перенаправления на Heroku
Добавьте оба имени хоста в приложение Heroku:
-
$ домены heroku: добавить example.com
-
$ домены heroku: добавить www.example.com
-
Перейдите в редактор записей и добавьте две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку Heroku. Предположим, что конечная точка Heroku для приложения —
.awesome-application.herokuapp.com
:- Добавить запись ALIAS в пункт
example.com
в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку приложенияawesome-application.herokuapp.com
- Добавьте запись CNAME для точки
www.example.com
в Heroku. Имя записи —
, а поле Content — конечная точка приложенияawesome-application. herokuapp.com
- Добавить запись ALIAS в пункт
В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.
Перенаправление с www на не-www (с HTTPS)
В этом сценарии у вас есть приложение, размещенное на Heroku, с настроенным личным доменом (например, example.com
). Вы хотите перенаправить версию с www ( www.example.com
) в то же приложение Heroku (или наоборот). Приложение также использует HTTPS .
В этом случае вы не можете использовать нашу службу перенаправления. Наилучшей стратегией является обработка перенаправления на уровне приложения с использованием сертификата, который распространяется как на имена хостов с www, так и без www.
Для перенаправления с использованием HTTPS необходимо иметь сертификат, который распространяется как на имена хостов с www, так и без www (корневой домен). Вы можете приобрести сертификат на одно имя за www
или подстановочные сертификаты для *
, чтобы покрыть корневой домен тем же сертификатом.
Для обработки перенаправления в Heroku
Для Heroku SSL
Добавьте оба имени хоста в приложение Heroku:
-
$ домены heroku: добавить example.com
-
$ домены heroku: добавить www.example.com
-
Закажите SSL-сертификат и добавьте его в Heroku(https://devcenter.heroku.com/articles/ssl):
-
$ сертификаты heroku: добавить server.crt server.key
-
Перейдите в редактор записей и две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку SSL Heroku :
- Добавьте запись ALIAS для точки
example.com
в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку SSLexample. com.herokudns.com
- Добавьте запись CNAME для точки
www.example.com
в Heroku. Имя записи —www
, а поле Content — конечная точка SSLwww.example.com.herokudns.com
- Добавьте запись ALIAS для точки
В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.
Для конечной точки SSL Heroku (устаревшая версия)
Добавьте оба имени хоста в приложение Heroku:
-
$ домены heroku: добавить example.com
-
$ домены heroku: добавить www.example.com
-
Включить конечную точку SSL Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную
зашифрованному-приложению. herokussl.com
.Закажите сертификат SSL и установите его на Heroku.
Перейдите в редактор записей и две записи DNS, по одной для каждого имени хоста, указывающие на конечную точку SSL Heroku :
- Добавьте запись ALIAS для точки
example.com
в Heroku. Оставьте поле Имя записи пустым и установите в поле Содержимое конечную точку SSLзашифрованное-приложение.herokussl.com
- Добавьте запись CNAME для точки
www.example.com
в Heroku. Имя записи —www
, а поле Content — конечная точка SSLзашифрованное-приложение.herokussl.com
- Добавьте запись ALIAS для точки
В вашем приложении перехватить входящий запрос. Если хост запроса не является каноническим, перенаправьте запрос на канонический домен. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.
Перенаправить HTTP на HTTPS
В этом сценарии у вас есть приложение, размещенное на Heroku, с настроенным личным доменом (например, example.com
). Вы хотите перенаправить HTTP-версию ( http://example.com
https://example.com
).В этом случае вы не можете использовать нашу службу перенаправления, поскольку невозможно указать один и тот же домен на уровне DNS для двух разных приложений на основе схемы HTTP/HTTPS. Лучшая стратегия — обрабатывать перенаправление на уровне приложения.
Для обработки перенаправления в Heroku
Для Heroku SSL
Добавьте имена хостов в приложение Heroku:
-
$ домены heroku: добавить example.com
-
Закажите сертификат SSL и установите его на Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную
example. com.herokudns.com
.Перейти к редактору записей и записей DNS для имени хоста, , указывающий на конечную точку SSL Heroku :
- Если имя хоста является корневым доменом (например,
example.com
): добавьте запись ALIAS для точкиexample.com
в Heroku. Оставьте поле Name записи пустым и установите в поле Content конечную точку SSLexample.com.herokudns.com
- Если имя хоста является поддоменом (например,
www.example.com
): добавьте запись CNAME в точкуwww.example.com
в Героку. Имя записи —www
, а поле Content — конечная точка SSLexample.com.herokudns.com
- Если имя хоста является корневым доменом (например,
В вашем приложении перехватить входящий запрос. Если запрос исходит от HTTP, перенаправьте запрос на тот же домен, заменив HTTP на HTTPS. Способ выполнения перенаправления зависит от языка программирования и/или среды разработки вашего приложения.
Для конечной точки SSL Heroku (устаревшая версия)
Добавьте имена хостов в приложение Heroku:
-
$ домены heroku: добавить example.com
-
Закажите сертификат SSL и установите его на Heroku. Heroku предоставит вам конкретную конечную точку SSL, аналогичную
зашифрованному-приложению.herokussl.com
.Перейти к редактору записей и записей DNS для имени хоста, , указывающий на конечную точку SSL Heroku :
- Если имя хоста является корневым доменом (например,
example.com
): добавьте запись ALIAS для точкиexample.com
в Heroku. Оставьте поле Имя записи пустым и установите в поле Содержимое конечную точку SSLзашифрованное-приложение.herokussl.com
- Если имя хоста является поддоменом (например,
www.
): добавьте запись CNAME в точкуwww.example.com
в Героку. Имя записи —www
, а поле Content — конечная точка SSLзашифрованное-приложение.herokussl.com
- Если имя хоста является корневым доменом (например,
В вашем приложении перехватить входящий запрос. Если запрос исходит от 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 — это постоянное перенаправление.