Всем привет! Иногда необходимо выполнить установку с автоматическим продлением Let’s Encrypt SSL сертификата на домен с редиректом.
Если поставить обычный редирект вида:
Redirect 301 / https://{ВАШ_САЙТ}/
, то сертификат не может выпустится так как на домене {ВАШ_САЙТ_С_РЕДИРЕКТОМ} работает редирект на {ВАШ_САЙТ}, редирект работает абсолютно на всех поэтому робот проверяющий домен не может найти файл с подтверждением домена
Примечание:
{ВАШ_САЙТ_С_РЕДИРЕКТОМ} — это сайт, с которого настроен редирект на сайт {ВАШ_САЙТ}
{ВАШ_САЙТ} — сайт, на который настроен редирект с сайта {ВАШ_САЙТ_С_РЕДИРЕКТОМ}
То есть на хостинге создается файл проверки с ключем, по пути http://{ВАШ_САЙТ_С_РЕДИРЕКТОМ}/.well-known/acme-challenge/………………..
С вышеописанного правила проверяющего робота просто редиректит на домен {ВАШ_САЙТ} , где нет этого файла.
Решение
Чтобы это преодолеть вам нужно изменить сам редирект на домене {ВАШ_САЙТ_С_РЕДИРЕКТОМ} в файле .htaccess
Вы должны заменить этот код в файле
Redirect 301 / https://{ВАШ_САЙТ}/
На вот этот код:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !^Mozilla/5\.0\ \(compatible;\ Let\'s\ Encrypt\ validation\ server;\ \+https\:\/\/www\.letsencrypt\.org\)$ RewriteRule ^(.*)$ https://{ВАШ_САЙТ}/$1 [R=301,L]
Эти правила перенаправят все запросы, не содержащие User-Agent «Mozilla/5.0 (compatible; Let’s Encrypt validation server; +https://www.letsencrypt.org)», на https://{ВАШ_САЙТ}/.
После чего вы сможете выпускать сертификат без каких либо проблем, так как проверяющий бот не будет редиректится на другой домен.