Bootstrap

Как настроить перенаправление, постоянный редирект в apache2

Как настроить перенаправление, постоянный редирект в 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:


sudo a2ensite your_domain.conf

по сути предыдущая команда просто создаст символьную ссылку на этот файл, убедимся в этом, в каталоге


sudo ls -la /etc/apache2/sites-enabled

Далее давайте проверим ошибки конфигурации:


sudo apache2ctl configtest

Вы должны добиться получения следующего вывода:

OutputSyntax OK

Только после этого есть смысл перезапустить Apache, чтобы изменения вступили в силу:


sudo systemctl restart apache2

Так как наш сайт работает по протоколу https, то для него следует создать ещё один ssl сертификат на доменное имя, которое у нас на кирилице.

Ещё раз, напомним домен с именем подари-лес.рф, не поддерживается Certbot в его формате, отличном от ASCII. Чтобы выдать сертификат для такого интернационализированного доменного имени (IDN), вам потребуется использовать кодировку Punycode, которую мы уже и так указали в файле настроек your_domain.conf её имы получили у регистратора. Но это можно сделать и самостоятельно.

Punycode — это способ представления доменных имен Unicode с использованием только символов ASCII. Чтобы преобразовать ваше доменное имя в Punycode, вы можете использовать онлайн-конвертер, такой как Punycoder (https://www.punycoder.com/). Просто введите свое доменное имя в исходном формате, отличном от ASCII, и конвертер сгенерирует соответствующую строку Punycode.

Вы можете использовать такую строку с Certbot для выпуска сертификата. Команда будет выглядеть так:

установим нужные пакеты если их ещё нет


sudo apt install -y certbot python3-certbot-apache

и сама команда, пишется так и только так в нашем случае:


sudo certbot certonly --apache -d xn--e1aaog6a.xn--p1ai

Но, напоминаю, в том числе для индексации поисковиками этой ошибки, что если бы, вы ввели доменное имя просто на кирилице 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 дней.

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


sudo systemctl status certbot.timer

Вывод будет выглядеть следующим образом:

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 отправит сообщение на указанный вами адрес электронной почты с предупреждением о том, что срок действия сертификата подходит к концу.

Теперь мы решили поставленную задачу перенаправления полностью. Для пущей надёжности и/или отчистки кэшов, можете перезагрузить свой сервер и наслаждаться полученным результатом.

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

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

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: