#apache #redirect #http-host
#apache #перенаправление #http-хост
Вопрос:
Редактировать: Redirect permanent "/" "https://%{HTTP_HOST}/"
фактически не работает при первом перенаправлении. Оказалось, что это сработало, потому что мой CDN автоматически перенаправил http на https:, а не из-за моих настроек. Извините за путаницу.
Я пытаюсь написать файл конфигурации Apache httpd, чтобы перенаправить весь http-трафик на https, а также необходимо перенаправить домен none www на www.
например
http://example.com http://www.example.com https://example.com
все ли должны быть перенаправлены на
https://www.example.com
Вот что я сделал:
<VirtualHost ipaddress:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent "/" "https://%{HTTP_HOST}/"
</VirtualHost>
Эта часть работает. Весь http перенаправляется на https. Обратите внимание, %{HTTP_HOST} разрешен и заменен.
Теперь мне нужно перенаправить none www на www
<VirtualHost ipaddress:443>
SSLEngine on
ServerName www.example.com
ServerAlias example.com
<If "%{HTTP_HOST} !~ /www/">
Redirect permanent "/" "https://www.%{HTTP_HOST}/"
</If>
...
</VirtualHost>
Когда я посещаю https://example.com
, он перенаправляет, но на этот раз он перенаправляется на
https://www.%{HTTP_HOST}/
вместо https://www.example.com/
.
Теперь, если я использую
Redirect permanent "/" "https://www.example.com/"
затем https://example.com
будет перенаправлено на https://www.example.com
Таким образом, похоже, что %{HTTP_HOST} не был заменен во втором блоке VirtualHost.
Как сделать это правильно?
Ответ №1:
Вы могли бы попробовать использовать правило перезаписи
RewriteEngine On
RewriteCond %{HTTP_HOST} ^https://example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1