Я хочу перенаправить весь свой веб-трафик на 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">
........
Единственный сайт, который не перенаправляет, это
Что мне не хватает ??
Как упоминал Томас, вы хотите использовать 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
, чтобы не потерять путь при перенаправлении.
Как упоминал Томас, \.
это хорошая идея, иначе вы можете в конечном итоге найти больше совпадений, чем ожидалось (хотя для хоста это маловероятно ...)
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">