要通过 .htaccess
文件强制使用 HTTPS 访问网站,可以使用以下方法:
mod_rewrite
模块(推荐)在 .htaccess
文件中添加以下代码:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
- 启用重写引擎。RewriteCond %{HTTPS} off
- 检查当前请求是否不是 HTTPS(即 HTTP)。RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- 如果不是 HTTPS,则重定向到相同的 URL,但使用 HTTPS 协议,并返回 301(永久重定向)状态码。mod_headers
(备用方案)如果服务器支持 mod_headers
,也可以使用以下方式:
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
</IfModule>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
mod_rewrite
已启用:
LoadModule rewrite_module modules/mod_rewrite.so
已启用。http://yourdomain.com
,应该自动跳转到 https://yourdomain.com
。apache
RewriteCond %{HTTP:X-Forwarded-Proto} !https
.htaccess
文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# 可选:启用 HSTS 增强安全性
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
保存后,清除浏览器缓存测试效果。如果遇到问题,检查 Apache 错误日志(通常位于 /var/log/apache2/error.log
)。