Apache 如何使用 htaccess 将 http 强制跳转到 https
当你的站点采用 https 协议访问,需要将 http 协议重定向到 https 协议,只需要在 .htaccess 加入下面规则
在相应的网站根目录新建 .htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{http_HOST}/$1 [R,L]
或者
RewriteEngine On
RewriteCond %{https} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
这里分享几个实战案例
1、强制301重定向 https
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>
2、站点绑定多个域名时,只允许 www.code-beat.com 跳转
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{http_HOST} ^code-beat.com [NC,OR]
RewriteCond %{http_HOST} ^www.code-beat.com [NC]
RewriteRule ^(.*)$ https://%{http_HOST}/$1 [R,L]
3、一些比较高级的用法
RewriteEngine on
# 强制https
RewriteCond %{https} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制http
RewriteCond %{https} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
4、指定 url 时才跳转到 https
只要求访问 http://www.code-beat.com/articles/ 时强制跳转到 https://www.code-beat.com/articles/ ,其他的 url 访问时都不做 http 到 https 的强转。
下面的配置,就实现了只是针对 http://www.code-beat.com/articles/ 这一个单独的 url 做 https 的强制跳转,其他 url 访问时都不做跳转。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{http_HOST} ^www.code-beat.com/articles/ [NC]
RewriteRule ^(.*)$ https://www.code-beat.com/articles/ [R,L]
</IfModule>
希望本文可以对你解决问题有所帮助。
版权声明:本文为原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.oneue.com/articles/1911.html