虽然感觉自己记录一点东西的博客,有没有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'; |
这下完蛋,登录可以,但是所有的管理页面都是:抱歉,您不能访问此页面。
最后解决,这个博客(https://www.violte.com/archives/22 链接已不可用)上看到了,那些加在wp_config.php中的代码需要在
1 | require_once(ABSPATH . 'wp-settings.php'); |
之前。
并且再多一句:
1 | define( 'CONCATENATE_SCRIPTS', false ); |
然后就解决了问题,但是其实我还不知所以然,看来还需要多看看最好的语言——PHP。
PS:WordPress新的编辑器真心不怎么好用啊……
哈哈, 最近更新了啊。
还是wordpress呀!
是啊,前些天整理NAS,发现了当初打包的wordpress文件和导出的数据库,然后又复活了博客。看你的新博客更会玩啊!要学习一下。
本地编辑,再同步ftp服务器
原来你又转移阵地了。我还是喜欢直接ssh编辑的感觉 :p