Обратите внимание на нечетную ошибку в Apache 2.2 (см. Apache 2.2.15), которая делает это трудным, если вы используете env=HTTPS
для управления, когда заголовок установлен. По какой-то причине env=HTTPS
не запускается при переадресации, даже если RewriteCond %{HTTPS}
on используется для управления перенаправлением. Таким образом, в моей конфигурации, что позволяет HTTP Strict Transport Security (HSTS), я использую использовать RewriteRule для создания переменной среды с именем X_HTTPS
, который имеет такое же значение, как HTTPS
, но который не установлен в нуль, когда env=X_HTTPS
оценивается:
SetEnv HSTS "max-age=31536000; includeSubDomains; preload"
# For some reason in Apache 2.2, HTTPS env variable is not available during redirects
RewriteCond %{HTTPS} on
RewriteRule ^.*$ - [ENV=X_HTTPS:%{HTTPS}]
# Set HSTS Header if the page is delivered via SSL
Header always set Strict-Transport-Security %{HSTS}e env=X_HTTPS
# Redirect SSL-only non-www page to www and quit
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=303,L]
# Redirect ANY non-SSL page to SSL
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=303,L]
Конфигурация Apache? Через какой язык программирования? –