перенаправление apache в https с none www на домен www

#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