开启全站HTTPS

虽然感觉自己记录一点东西的博客,有没有HTTPS都一样。但是毕竟是趋势么,就试试开启了。先申请了Let’s Encrypt的证书,这个网上资料很多,CentOS 7 EPEL就有certbot,按网上说明就行。懒人就用通配符dv证书就好。

关键在WordPress设置,中间出了很多状况。

先开启rewrite,将全部HTTP请求重发么HTTPS去,看起来正常。然后HTTPS打开站点,发现有很多在HTTPS站点站点请求HTTP资源的警告,先忽略。

然后按网上学来的方法,直接替换数据库中的全部到本站的”http://”开头的链接到“https://”,用的以下方法:

1
2
3
4
5
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com','https://example.com');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'http://example.com','https://example.com');
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://example.com','https://example.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://example.com','https://example.com');
UPDATE wp_termmeta SET meta_value = REPLACE(meta_value, 'http://example.com','https://example.com');

然后就傻了,请求HTTP资源的警告还在,无法登录了。网上一顿查,看到可能的方案就改。先是在wp-config.php后面加上了如下代码:

1
2
3
/** 强制后台和登录使用 SSL **/
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
1
 
1
2
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';

这下完蛋,登录可以,但是所有的管理页面都是:抱歉,您不能访问此页面。

最后解决,这个博客上看到了,那些加在wp_config.php中的代码需要在

1
require_once(ABSPATH . 'wp-settings.php');

之前。

并且再多一句:

1
define( 'CONCATENATE_SCRIPTS', false );

然后就解决了问题,但是其实我还不知所以然,看来还需要多看看最好的语言——PHP。

PS:WordPress新的编辑器真心不怎么好用啊……

《开启全站HTTPS》有4条留言

    • 是啊,前些天整理NAS,发现了当初打包的wordpress文件和导出的数据库,然后又复活了博客。看你的新博客更会玩啊!要学习一下。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据