这个问题是我之前遇到过得一个问题,今天拿过来给大家分享一下,也算是一个教学吧。
遇到这个问题有如下几个原因
- SSL 证书是否添加
- 如果https访问是正常的,你可以设置重定向
- 如果你的网站后台有设置URL的地方,也必须设置为https
SSL证书是否添加
如果你使用的是老薛主机,当然就简单了操作如下:
1. 登录 cPanel 面板—SSL/TLS—管理 SSL 站点,卸载自签名的 SSL 证书(如果没有自签名的 SSL 证书,请忽略这个步骤)。
2. 登录域名注册商或 DNS 服务商平台管理解析,添加 A 记录解析 mail、cpanel、webmail、webdisk、autodiscover、cpcontacts、cpcalendars 这 7 个系统子域名到我们的主机 IP(如果不使用或不愿意解析某些域名/子域名,需要按照这个教程添加例外。
3. 无需其他操作,系统会在 24 小时内自动配置好 SSL 证书,保持解析这 7 个系统子域名,SSL 证书会自动续期。
详情可以查看 关于免费 SSL 证书的说明:
如果你使用的其他主机商也是可以通过wordpress插件来安装免费的ssl证书,这里我就不提供教程了,自己搜索一大把。
如果https访问是正常的,你可以设置重定向
如果你是直接输入域名比如:qinyufen.com打开网站就会提示不安全如下:
这里还是以老薛主机为例进行说明;
我们虚拟主机为linux系统,apache环境,支持.htaccess规则,设置伪静态,在程序开发商处获取.htaccess规则即可,.htaccess文件的创建方法如下:
登录cpanel控制面板:
进入文件管理器:
进入网站根目录:
‘
点击右上角“设置”:
勾选显示隐藏文件:
如果列表中已经有了.htaccess文件,则可以不用创建,如果没有,请继续创建。
点击左上角“文件”:
文件名称填写 .htaccess
选中.htaccess文件,点击上方的编辑:
复制粘贴在程序开发商处获取的.htaccess规则,最后点保存:
只需要将以下代码放到 .htaccess 文件中即可,如果 .htaccess 文件中已经有内容,请将重定向代码放在最前面。
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
高级进阶
以上规则会影响子域名,如果希望只有主域名使用https,而子域名不使用,使用以下规则:
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^www.laoxuehosts.com
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
注意上面的规则中的laoxuehosts.com换成你的域名。
如果只想排除某个子域名,也就是只有某个子域名不使用https,可以使用以下规则:
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^https://help.laoxuehosts.com
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
注意上面的规则中的help.laoxuehosts.com换成你的域名。
以上操作完毕,网站就正常显示了。