Как перенаправить запросы, поступающие наhttps://blog.example.comкhttps://example.com/blog?
Читая документацию Apache о том, когда не следует использовать режим перезаписи, я попробовал простое перенаправление, например
Redirect https://blog.example.com https://example.com/blog
Но когда я посещаюhttps://blog.example.com, он не перенаправляет меня. Только говорит об ошибке с сертификатом. Есть ли возможность перенаправить поддомен HTTPS? Он работает нормально с HTTP, когда я использую что-то вроде этого:
<VirtualHost *:80>
ServerName blog.example.com
Redirect / https://example.com/blog/
</VirtualHost>
Такие условия:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^/(.*)$ https://example.com/%1/$1 [R=301,L]
Работает только при использовании HTTP, а не HTTPS...
Спасибо.
решение1
Ваша конфигурация применяется к VirtualHost *:80
, другими словами к http
порту. Порт для https
— 443. Найдите эту конфигурацию и примените перенаправление и там.
решение2
Я думаю, что для этого можно использовать mod_alias.
В вашем виртуальном хосте blog.example.com:
RedirectMatch (.*)$ / https://example.com/blog/$1
решение3
Если браузер обнаружит ошибку сертификата, это прервет транзакцию.досрабатывает перенаправление. Если вы не используете HSTS, вы сможете подтвердить это, щелкнув по ошибке, и перенаправление продолжится как обычно. Сама ошибка может возникнуть по ряду причин, и браузер сообщит вам, какая из них применима, но наиболее вероятно, что ваш сертификат действителен только для example.com
и не имеет записи SAN для blog.example.com
(или для подстановочного *.example.com
). Чтобы исправить это, вы можете либо повторно сгенерировать сертификат, включив это дополнительное имя, либо получить дополнительный сертификат и настроить конфигурацию вашего сервера для обслуживания этого для поддомена — в любом случае выбранный вами поставщик сертификатов (CA) должен быть в состоянии вам помочь.