Apache 如何使用 htaccess 将 http 强制跳转到 https

2023-11-06原创,版权声明见本文尾部

【双12】主会场 低至1折

当你的站点采用 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>

希望本文可以对你解决问题有所帮助。

收藏

提示信息