Перенаправление Apache HTTPS / без WWW

Я хочу перенаправить весь свой веб-трафик на https://example.com

Пока что у меня есть все кроме https: www.example.com, перенаправление нормально

Это мой файл конфигурации виртуального хоста похоже на

<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache2/htdocs"
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/(.*) https://example.com/ [R,L]
  RewriteCond %{HTTPS_HOST} ^https://www.example.com [NC]
  RewriteRule ^/(.*) https://example.com/ [R,L]
  <Directory "/opt/bitnami/apache2/htdocs">
  ........

Единственный сайт, который не перенаправляет, это

https://www.example.com

Что мне не хватает ??

0
задан 30 March 2019 в 01:42
2 ответа

Как упоминал Томас, вы хотите использовать HTTP_HOST . Также ваша информация избыточна и даже бесполезна. Также вы перенаправляете порт 80 на 443, что означает, что HTTPS в любом случае будет отключен (не установлен). А для перенаправления на порт 443 вам потребуется это перенаправление в определении 443.

# http://... to https://...
<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache2/htdocs"
  RewriteEngine On
  RewriteRule ^/(.*) https://example.com/$1 [R,L]
  ...
</VirtualHost>

# https://www.example.com -> https://example.com
<VirtualHost _default_:443>
  DocumentRoot "/opt/bitnami/apache2/htdocs"
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
  RewriteRule ^/(.*) https://example.com/$1 [R,L]
  ...
</VirtualHost>

Также вам, вероятно, понадобится $ 1 , чтобы не потерять путь при перенаправлении.

Как упоминал Томас, \. это хорошая идея, иначе вы можете в конечном итоге найти больше совпадений, чем ожидалось (хотя для хоста это маловероятно ...)

0
ответ дан 4 December 2019 в 15:44

HTTPS_HOST не существует, насколько мне известно, вам нужен HTTP_HOST . Кроме того, переменная HTTP_HOST не включает схему.

Кроме того, хотя технически она все еще будет работать, вы можете захотеть избежать своих . (кроме ) RewriteRule ), поскольку они имеют особое значение в контексте регулярного выражения (означающее «любой символ»). Конечно, точка также квалифицируется как любой символ, это по-прежнему хорошая практика.

<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache2/htdocs"
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/(.*) https://example.com/ [R,L]
  RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
  RewriteRule ^/(.*) https://example.com/ [R,L]
  <Directory "/opt/bitnami/apache2/htdocs">
1
ответ дан 4 December 2019 в 15:44

Теги

Похожие вопросы