Как настроить перенаправление, постоянный редирект в apache2
Для чего это может быть нужно, например у меня есть домен на кирилице подари-лес.рф, что идентично адресу xn----7sblgntqhmo.xn--p1ai
Допустим суть задачи это, чтобы пользователь, вбивая в браузер подари-лес.рф был перенаправлен на https://podari-les.ru
Сперва производятся все настройки у регистратора домена(где вы приобретали доменное имя), прописываем нужные dns записи, и у хостера(где хранятся файлы), где и трудится ваш сервер с сайтом.
если всё настроено верно то на сервисе https://www.whatsmydns.net/ можно проверить, вбивая свой адрес, в моём случае подари-лес.рф мы должны увидеть что возвращается тот же ip адрес, что и с домена https://podari-les.ru, на который мы и делаем свой redirect
Если этого ещё не происходит, а вы настроили всё правильно, уточняйте в техподдержке регистратора и/или хостера в чём причина. Но до получения нужного результата, нет смысла продолжать дальше.
Итак вы видете, что подари-лес.рф возвращает тот же ip адрес.
Теперь заходим на сервер по ssh и создаём там файл конфигурации, на debian подобных дистрибутивах это создаётся в каталоге
/etc/apache2/sites-available
Назовём файл как пожелаем, пусть это будет your_domain.conf и сохраним в нём следующее, (владельцем файла, с исключительными правом его менять, является соответственно пользовать root) (-rw-r--r--)
содержимое файла /etc/apache2/sites-available/your_domain.conf:
☯
Terminal:
⌕
≡
✕
# Описание сервера ServerAdmin yours_email@podari-les.ru # домен сайта ServerName подари-лес.рф ServerAlias xn----7sblgntqhmo.xn--p1ai #путь до каталога с вашим сайтом на сервере DocumentRoot /var/www/html/yours_dir_projects ErrorLog /var/www/html/yours_dir_projects/logs/error_log CustomLog /var/www/html/yours_dir_projects/logs/access_log common #перенаправление на указанный адрес #Чтобы настроить постоянный редирект, добавьте RedirectMatch permanent ^/(.*)$ https://podari-les.ru/$1 Include /etc/letsencrypt/options-ssl-apache.conf #эти файлы ssl сертификата мы создадутся сами на следующем этапе. каталог будет идентичен имени punycode указаного домена SSLCertificateFile /etc/letsencrypt/live/xn----7sblgntqhmo.xn--p1ai/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/xn----7sblgntqhmo.xn--p1ai/privkey.pem
Давайте теперь активируем этот файл настроек с помощью инструмента a2ensite:
по сути предыдущая команда просто создаст символьную ссылку на этот файл, убедимся в этом, в каталоге
Далее давайте проверим ошибки конфигурации:
Вы должны добиться получения следующего вывода:
OutputSyntax OK
Только после этого есть смысл перезапустить Apache, чтобы изменения вступили в силу:
Так как наш сайт работает по протоколу https, то для него следует создать ещё один ssl сертификат на доменное имя, которое у нас на кирилице.
Ещё раз, напомним домен с именем подари-лес.рф, не поддерживается Certbot в его формате, отличном от ASCII. Чтобы выдать сертификат для такого интернационализированного доменного имени (IDN), вам потребуется использовать кодировку Punycode, которую мы уже и так указали в файле настроек your_domain.conf её имы получили у регистратора. Но это можно сделать и самостоятельно.
Punycode — это способ представления доменных имен Unicode с использованием только символов ASCII. Чтобы преобразовать ваше доменное имя в Punycode, вы можете использовать онлайн-конвертер, такой как Punycoder (https://www.punycoder.com/). Просто введите свое доменное имя в исходном формате, отличном от ASCII, и конвертер сгенерирует соответствующую строку Punycode.
Вы можете использовать такую строку с Certbot для выпуска сертификата. Команда будет выглядеть так:
установим нужные пакеты если их ещё нет
и сама команда, пишется так и только так в нашем случае:
Но, напоминаю, в том числе для индексации поисковиками этой ошибки, что если бы, вы ввели доменное имя просто на кирилице sudo certbot certonly --apache -d подари-лес.рф
то cert.bot выдал бы вот такую ошибку:
Non-ASCII domain names not supported. To issue for an Internationalized Domain Name, use Punycode.
правильным же результатом операции будет примерно вот такой вывод
☯
Terminal:
⌕
≡
✕
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Requesting a certificate for xn----7sblgntqhmo.xn--p1ai Performing the following challenges: http-01 challenge for xn----7sblgntqhmo.xn--p1ai Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/xn----7sblgntqhmo.xn--p1ai/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/xn----7sblgntqhmo.xn--p1ai/privkey.pem Your certificate will expire on 2023-09-13. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Пакет certbot, который мы установили, обеспечивает обновление приложений посредством добавления скрипта обновления в /etc/cron.d — им управляет служба systemctl, которая называется certbot.timer. Этот скрипт запускается дважды в день и автоматически обновляет любой сертификат, до истечения срока которого осталось менее 30 дней.
Чтобы проверить статус этой службы и убедиться, что она активна и запущена, можно использовать следующую команду:
Вывод будет выглядеть следующим образом:
☯
Terminal:
⌕
≡
✕
Output● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.
Чтобы протестировать процесс обновления, можно сделать запуск «вхолостую» с помощью certbot:
sudo certbot renew --dry-run
Если ошибок нет, то все в порядке. При необходимости Certbot обновит ваши сертификаты и перезагрузит Apache для получения изменений. Если процесс автоматического обновления когда-нибудь не выполнится, то Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты с предупреждением о том, что срок действия сертификата подходит к концу.
Теперь мы решили поставленную задачу перенаправления полностью. Для пущей надёжности и/или отчистки кэшов, можете перезагрузить свой сервер и наслаждаться полученным результатом.
-
Создано 16.06.2023 12:00:00
-
Roman Sakhno

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.