我想将HTTP Strict Transport Security指令添加到我的.htaccess文件中。我在这里添加了代码末尾的锁,但是当我测试HSTS预加载过程时,它会显示未设置的设置。我检查了我的Apache配置并看到启用了header模块。
我错过了什么?
<Files .htaccess>
order allow,deny
deny from all
</Files>
<FilesMatch "\.(png|gif|js|css)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</FilesMatch>
# disable directory autoindexing
Options -Indexes
ErrorDocument 400 http://%{HTTP_HOST}
ErrorDocument 401 http://%{HTTP_HOST}
ErrorDocument 402 http://%{HTTP_HOST}
ErrorDocument 403 http://%{HTTP_HOST}
ErrorDocument 405 http://%{HTTP_HOST}
ErrorDocument 404 /incl/pages/error404.php
ErrorDocument 500 http://%{HTTP_HOST}
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# BEGIN GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</ifmodule>
# END GZIP
# Use HTTP Strict Transport Security to force client to use secure connections only
<ifmodule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
</ifmodule>
答案 0 :(得分:0)
对于重定向,您需要使用always
属性:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
您正在为本地生成的非成功(非2xx)响应添加标头,例如重定向,在这种情况下,在最终响应中仅使用与
always
对应的表。
答案 1 :(得分:0)
对于Apache 2.2,无论您是否指定Header always set x x env=HTTPS
,{@ 1}}都不会与重定向匹配。
我的建议:将您的VirtualHosts分开,以便它们不会混合使用明文/ ssl端口,然后在仅限ssl的VirtualHosts上无条件地指定SSLOptions +StdEnvVars
。
检查httpd-2.2.15-60.el6.centos.6.x86_64