昨天终于部署好了SSL,点亮了小绿锁,看着可比以前那个红叉叉顺眼多了。还没有把自己网址HTTP升级为HTTPS的站长们赶快动手吧。

虚拟主机WordPress部署SSL,我的网站加小绿锁,设置免费SSL证书流程

今天我在调试网站的时候发现输入原来的网址还是有不带http的页面,很显然,这需要做一个自动跳转。

下面是一篇通过.htaccess使http自动301跳转到https的方法的教程,这里采纳了好酷资源网的一些内容。

一、为什么HTTP到HTTPS改造之后需要进行301重定向设置?

1、传递权重,有利于SEO。

网站从http改到https后的一段时间,百度、谷歌、360这些搜索引擎需要重新抓取、判断、计算,收录,网站的排名和流量都会发生阶段性下降。所以我们要通过301转向把网站原来的权重传递给新的HTTPS网址。

2、百度站长平台认证。

把一个网站改造成https之后,我们可以去百度站长平台认证https,但是百度的https认证是严格遵守301重定向的,如果没有进行301设置,提交之后就会出现“请将您的http站点301重定向到https站点”。

二、怎么进行HTTP到HTTPS的301重定向设置?

服务器环境不同,301跳转代码的设置也不同,所以大家在做301重定向之前要先弄清楚自己服务器的环境。

1、linux系统+Apache环境:

把下面的代码写入.htaccess文件,301重定向代码如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:From-Https} !^on$ [NC]
RewriteRule ^(.*)$ https://www.guminfeng.cn/$1 [R=301,L] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.guminfeng.cn$1 [R=301,L] 
</IfModule>

注意:.htaccess是Apache服务器下的配置文件,如果你的服务器或者虚拟主机不是Apache环境则不适用此方法

上面的代码有个缺陷,内页的不能自动跳转,只是针对了首页,下面的代码可以实现全站跳转,但是在测试中总会发生页面打开错误,所以这里顾敏锋博客没有采用。

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

2、linux系统+Nginx环境:

编辑nginx站点配置文件(登录wdcp管理面板中:站点列表-文管-虚拟主机站点文件nginx-对应站点配置文件),添加以下301重定向规则:

server
{
listen 80;
server_name abc.com;
rewrite ^(.*) https://www.abc.com$1 permanent; 
}

3、Windows系统+II7环境:

云服务器的设置代码:在对应站点根目录下新建(通过ftp或登录后直接进入到D:\wwwroot\站点ftp命名目录\wwwroot创建)一个文件命名为web.config并编辑添加以下301重定向规则:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="301" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="^on$" negate="true" />
</conditions>
<action type="Redirect" url="https://www.abc.com/{R:1}" redirectType="Permanent" /> # www.abc.com对应修改为您自已的域名
</rule>
</rules>
</rewrite>
</system.webServer> 
</configuration>

虚拟主机的设置代码:可以通过ftp或登录后进入到主机管理面板-文件管理,进入wwwroot,新建一个文件命名为web.config并编辑添加以下301重定向规则:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="301" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_FROM_HTTPS}" pattern="^on$" negate="true" />
</conditions>
<action type="Redirect" url="https://www.abc.com/{R:1}" redirectType="Permanent" /> # www.abc.com对应修改为您自已的域名
</rule>
</rules>
</rewrite>
</system.webServer> 
</configuration>