Linux | Apache环境下强制http跳转至https的配置总结

  • 内容
  • 相关

如果网站安装SSL证书开启HTTPS后,不设置强制跳转的话,http和https会同时存在,那么如何在Apache Web环境下将HTTP强制跳转到HTTPS呢?

接下来将给给出使用.htaccess文件使HTTP强制跳转到HTTPS的几种方法,欢迎尝试与提出意见。

1)在httpd.conf文件里使下面模块生效


[root@back ~]# cat /etc/httpd/conf/httpd.conf
.....
LoadModule ssl_module modules/mod_ssl.so
#如果使用https证书,这个模块功能一定要打开!
.....
LoadModule rewrite_module modules/mod_rewrite.so
#如果要http强转到https,这个模块功能一定要打开!

2)httpd.conf配置文件或者是在httpd-vhost.conf文件里修改


[root@back ~]# cat /etc/httpd/conf/httpd.conf
.......
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
    Options FollowSymLinks MultiViews Includes
    AllowOverride All     #此处的none一定要改成all
    Require all granted
</Directory>

3)在网站根目录下面添加该文件".htaccess"目录访问控制文件,并添加相应的内容。

.htaccess文件是Apache环境下的配置文件,通过.htaccess文件,可以帮我们实现网页301重定向等功能。

.htaccess文件在哪?在你的站点根目录,没有就自己创建一个。此处用.htaccess文件可以将HTTP强制跳转到HTTPS。

方法一:.htaccess强制301重定向 HTTPS

设置.htaccess文件的301重定向,在.htaccess文件中加入以下规则:


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

以上方法,通过.htaccess设置301将HTTP重定向到HTTPS是最为常见的方法。

方法二:HTTP 80 强制转 HTTPS

全站使用HTTPS协议访问,所以将HTTP重定向到HTTPS,在.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]

其他需求一:强制HTTPS方式访问,并自动将顶级域名跳转到WWW

以本博客网站为例,顶级域名是指fishyoung.com,此处是将:http://fishyoung.com跳转到https://www.fishyoung.com/


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

其他需求二:强制HTTPS方式访问,并自动将WWW跳转到顶级域名

此处是将:http://www.fishyoung.com跳转到https://fishyoung.com/


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

以上就是使用.htaccess文件将HTTP强制跳转到HTTPS的几种方法,包括顶级域名和www域名之间的跳转方法。

 您阅读这篇文章共花了:

上一篇:Linux | apache虚拟主机和rewrite配置规则解释

下一篇:EVE-NG关联SecureCRT, VNC, Wireshark

本文标签:    

版权声明:本文依据CC-BY-NC-SA 3.0协议发布,若无特殊注明,本文皆为《fishyoung》原创,转载请保留文章出处。

本文链接:Linux | Apache环境下强制http跳转至https的配置总结 - http://www.fishyoung.com/post-233.html