利用Apache Rewrite规则实现强制跳转HTTPS且不带www前缀

apache-http-server.png
一直在用AMH自带的amssl工具实现强制跳转HTTPS访问,但前几天遇到二级域名也被强制跳转的问题。
仔细看了一下,默认规则如下:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

这个规则存在一个最大的问题是:当访问类似a.b.com的二级域名时会强制跳转HTTPS访问,而这个二级域名并没有开启SSL,会导致访问失败。
还有就是没法让https://www.b.com 跳转至https://b.com

在网上搜了一下,在腾讯云社区找到了一篇比较详尽的文章(Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结)解决了我的问题。

下面是修改后的规则:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^b.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.b.com [NC]
RewriteRule ^(.*)$ https://b.com$1 [R=301,L]

这个规则可以实现访问www.b.com、b.com、https://www.b.com均会跳转到https://b.com,这样网站在搜索结果里就只有一个开启了HTTPS的域名,可以提高网站的索引量和权重。

本文链接:

https://heng07.com/post/3305.html