关于Hostker和主机壳用户更换HTTPS后一直重定向的解决办法

发布于 2019-05-07  219 次阅读


前因

我的一个网站萌未来本来在硅云上,然而最近因为同主机的其他网站被打,因而被强制迁移到了加拿大高防机房(八成是OVH),然后喜闻乐见地打不开了。

我给硅云的工程师发了工单,回复速度的确是一如既往的快,但回复却是相当令人无语:

您好,请暂时取消https的强制跳转哦,目前主机ip在硬防线路上,感谢您对硅云的理解和支持!

WTF?你换线路跟我用HTTPS有什么关系吗……

看来这问题是一时半会儿解决不了了,于是我就把网站迁移到了一直久仰大名但没尝试过的主机壳。

配置完成!速度真是快了好几倍!

然而……

后果

部分访客反映打不开网站首页,显示的错误原因是“过多的重定向”。

这TM就很尴尬了,我一个不会前端后端的就完全没办法了。

还好我还有Google大法,经过一番查询得知主机壳的HTTPS不走443端口只能用判断规则 RewriteCond %{HTTP:KERSSL} !on。

感谢雅音宫羽的关于hostker和主机壳用户强制HTTPS一直重定向的解决办法和hcl的全站启用 HTTPS – HydricAcid

作为一个伪Coder,我的基本原则就是绝不重复造轮子。所以我把大佬博客的.htaccess代码直接复制过来用了。

但是网站却直接500错误了......

这TM就很尴尬了,我一个不会前端后端的就完全没办法了。

但作为一名合格的文科生,我把原来的.htaccess代码反复看了几遍,终于找到了症结之所在:

两位大佬的代码是:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:KERSSL} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

然而很显然,RewriteEngine On 和 RewriteBase / 应当连在一起写才对......

所以我修改了代码,果然能正常打开了。

附正确的.htaccess代码:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteCond %{HTTP:KERSSL} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress


洁尘于世,浩渺雾中。