前因
我的一个网站萌未来本来在硅云上,然而最近因为同主机的其他网站被打,因而被强制迁移到了加拿大高防机房(八成是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
叨叨几句... NOTHING