Самый эффективный способ перенаправить любой запрос к HTTPS на Apache? - PullRequest
0 голосов
/ 19 сентября 2018

Лучше этот код:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

или этот:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

или этот:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.ltd/$1 [R,L]

Я перепробовал их все,они работают, и я не заметил заметной разницы во времени загрузки сайта.Несмотря на это, я хотел бы понять, что они делают именно на 2-й строке.

1 Ответ

0 голосов
/ 22 сентября 2018

В конечном счете, это зависит от вашей настройки.

В первом примере вы проверяете протокол на основе заголовка X-Forwarded-Proto.Как видите, это устанавливается прокси-сервером или балансировщиком нагрузки, расположенным перед вашим сервером, поэтому, если у вас его нет, этот заголовок может быть пустым, даже если клиент установил безопасное соединение, и вы все равно выполняетеперенаправление.

Вторая - это переменная, устанавливаемая непосредственно веб-сервером в зависимости от того, какое соединение оно получило, но зависит от mod_ssl, поэтому может недоступен.

Последний проверяет порт, дополнительная информация об используемом протоколе отсутствует, вам нужно выяснить, работает ли Apache с нестандартными портами.

...