又拍云CDN边缘规则直接实现301根域名重定向功能

此方法适用于虚拟主机及服务器中部署了SSL的站点并使用又拍云CDN,其他CDN自行参考,以下是我发现问题的过程

  • 由于我一直是使用虚拟主机,没有ROOT权限,所以只能通过.htaccess文件来写重定向和伪静态规则
  • 在与另一个站长交流的过程中发现我博客根域名HTTPS访问后不会跳转到https://www.menron.com
  • 搜寻谷歌、百度和相关文档并不能找到解决HTTPS根域名跳转到HTTPS的WWW域名,所以我求助了又拍云
  • 在求助的过程中,发现我只要在又拍云CDN控制台开启强制HTTPS访问即可,无需设置301重定向。。。
  • 最后通过又拍云CDN服务的边缘规则功能,才将https://menron.com的访问跳转到HTTPS的www域名

解决过程

第一步

我原本的.htaccess文件内容如下:

 <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
        RewriteCond %{HTTP:From-Https} !^on$ [NC]
        RewriteCond %{HTTP_HOST} ^(www.)?abc.com$ [NC]
        RewriteRule ^(.*)$ https://www.abc.com/$1 [R=301,L]
</IfModule>

现在我将它的第7-8行删除,文件内容结果如下:

 <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

然后将该.htaccess文件上传至网站根目录,保留的内容是Typecho的伪静态URL规则,以上均为Apache环境

第二步

  先检查以下自己的域名有没有正确的解析到CDN服务器上,下图为正确的解析方式,涂抹部分为你们自己CDN服务的别名,以及虚拟主机的SSL证书是否正确配置,CDN加速域名的SSL有无配置(两者SSL证书可不同)建议在又拍云申请CDN加速域名证书,可自动续期十分方便。

域名解析设置

  确认无误后,我们在CDN控制台回源管理->源站设置中设置好回源协议为HTTPS,如下图

源站设置

  配置完成后,我们需要在HTTPS控制中开启强制HTTPS,如下图

强制HTTPS

  做到这一步,我们已经完成了HTTP自动跳转HTTPS的重定向功能的设置了,接下来我们需要做的是如何将http://menron.com以及https://menron.com跳转到https://www.menron.com,下面的步骤会详细介绍,以上方法设置完成后就无需在虚拟主机或者服务器上开启强制HTTPS以及301重定向了,如果你开启可能会出现重定向过多而导致网站无法打开的问题。

第三步

使用边缘规则功能将http://menron.com以及https://menron.com跳转到https://www.menron.com

  首先打开CDN控制台的边缘规则配置,如下图:

边缘规则配置

  我们点击添加规则,按照下图配置

配置规则

  规则名称自己写一个,使用方式选择通用模式,条件判断选择HTTP请求头,参数填写Host,匹配值填写根域名,如menron.com,功能选择边缘重定向,响应状态码301。注意一定是301而不是302,虽然二者都是重定向的状态码,但是意义不同301表示链接永久跳转到目标链接,而302只是表示临时跳转,对于搜索引擎爬虫来说这很重要!URL字符串提取填写^/(.*)$,这是为了能从文章页面比如https://menron.com/archives/share/35.html直接跳转到https://www.menron.com/archives/share/35.html,而不是跳转到首页https://www.menron.com,然后下方重定向地址填写https://www.menron.com/$1,优先级默认为1,然后勾选break,启用该规则。做到这里我们就实现了HTTPS根域名跳转HTTPS的www域名的功能了。

相关问题

  关于边缘规则,还可以用来写伪静态URL功能,那样就无需在虚拟主机上使用.htaccess文件或服务器上写伪静态规则。总之这个功能很强大,我还没有完全使用透它,相关功能你们可以自行挖掘,欢迎与我分享你的经验~

最后修改:2019 年 05 月 11 日 10 : 50 PM
如果觉得我的文章对你有用,请随意赞赏

1 条评论

  1. Dxoca

    学到啦~

发表评论