谈谈通过.htaccess代码实现HTTPS的301跳转
概述
最近在搞博客,涉及到了https,经过一番折腾,花了时间,花了钱,特此记录一下
https相比http有很多好处,我的网站有以下两个地址:
www.xcshare.cn
xcshare.cn
如何让浏览器直接跳转为https://www.xcshare.cn 呢?
不废话了,直接上干货。
经历
首先你需要去空间服务商开通SSL的证书,我们的服务器是linux,所以是通过修改网页根目录下的.htaccess文件代码实现301跳转的。
这里有个小插曲,网站服务商给出了一下的代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xcshare.cn$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.xcshare.cn$
RewriteRule ^(.*)$ http://https://www.xcshare.cn//$1 [R=301,L]
</IfModule>
事实上,这个代码看似没啥问题,最多就是删除掉最后一句中的http://修改为:
RewriteRule ^(.*)$ https://www.xcshare.cn//$1 [R=301,L]
但事实上,浏览器就是无法访问,认为是重定义,为此我折腾了足足两个小时,没搞定。最后被迫付费找空间服务商搞定了,原来是如此的简单,竟然还收费我50元人民币。
下面的是我以前的.htaccess代码,实现网址伪静态,顺便提一下,我的博客程序是typecho,需要的朋友可以直接拿去:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
别人就很简单的添加了两行:(我到现在都没看懂是这不是还是写的http吗,问题是别人的代码浏览器确实没报错,奇怪)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteCond %{HTTP_HOST} ^xcshare.cn$ [NC]
#RewriteRule ^(.*)$ http://www.xcshare.cn/$1 [R=301,L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
然后,还需要在SSL部署里面勾选强制https
到此https的跳转就成功了。
总结
隔行如隔山啊,有多少小白和我一下,不懂代码,但有很喜欢搞网页博客,当遇到无法解决的问题时候,感觉很无助,但最终,谁也指望不上,只能靠自己学习解决。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
卖女孩的火柴棍
Q2:以学用编程软件(Python+SQL+VBA)为目的而拟入手云服务器,大佬们建议选用哪家云服务器、哪种付费配置环境、哪种系统版本?
Q3:当云软件运行,该如何加载or导入本地数据库、本地文档?如何将云软件运行后产生的数据文档导出、下载到本地电脑?
校验提示文案
卖女孩的火柴棍
Q2:以学用编程软件(Python+SQL+VBA)为目的而拟入手云服务器,大佬们建议选用哪家云服务器、哪种付费配置环境、哪种系统版本?
Q3:当云软件运行,该如何加载or导入本地数据库、本地文档?如何将云软件运行后产生的数据文档导出、下载到本地电脑?
校验提示文案