Veuillez noter un bogue bizarre dans Apache 2.2 (observé dans Apache 2.2.15) qui rend cela difficile si vous utilisez env=HTTPS
pour contrôler quand l'en-tête est défini. Pour certaines raisons env=HTTPS
ne se déclenche pas lors des redirections, même si RewriteCond %{HTTPS}
sur est utilisé pour contrôler la redirection. Donc, dans ma configuration qui permet HTTP Strict de sécurité des transports (HSTS), j'utilise utiliser un RewriteRule pour créer une variable d'environnement appelée X_HTTPS
qui a la même valeur que le HTTPS
, mais qui n'est pas réglé à NULL lorsque env=X_HTTPS
est évaluée:
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]
Configuration d'Apache? Par quel langage de programmation? –