Wordpress服务器使用Cloudflare配置SSL

前因

作为一名 Wordpress 新手,在自己的VPS或者服务器用 Wordpress 来建站,通常会遇到很多问题,例如空白页,内部错误等,非常恼人。最近火哥遇到了“将你重定向的次数过多”问题,这个问题出现在配置 SSL 和重定向的时候。我的服务器是安装了军哥的LNMP一键安装包,套了 Cloudflare 加速,没有申请SLL证书,跑不了 https,我的目标很明确:

非 www 的URL 301重定向到带 www 的 URL

非 https:// 的URL 301重定向到 https:// 的 URL

后果

由于没有玩过 Wordpress,所以经过浸 Y(泡)多年 Wordpress 玩家好友指点,通过 lnmp onlyssl 命令,给域名添加了SSL证书, 后台设置里修改  WordPress地址(URL) 和站点地址(URL)为带 https:// 的URL,

然后修改 wp-config.php 文件,添加

$_SERVER['HTTPS'] = 'on';

define('FORCE_SSL_LOGIN', true);

define('FORCE_SSL_ADMIN', true);

修改 nginx 等等一顿操作,结果还是不行,出现“将你重定向的次数过多”错误提示:

然后各种调试修改,又是打不开后台,又是不跳转等等等等,耗时几个小时无果。作为一名帝国和 Joomla 老手,怎么也没想明白,咋这么坑呢。。。。还好经过一天的冷静,查阅资料,仔细分析,终于明白,原来 Wordpress 自带了url-friendy的 SEO 功能,类似的 SSL,SEO,Cache 类插件也自带了 SEO 的功能,而且是使用重定向功能实现的,所以会出现“将你重定向的次数过多”这个错误,明白了原因那么解决方法就简单了。

解决方法

弃用VPS或服务器上添加 SSL 证书方案,改用 Cloudflare自带的免费SSL证书和重定向功能。

1、编辑站点的 nginx 配置文件 www.yoursite.com.conf,删除有关 SSL 的配置语句,确保以下配置语句正确并重启 nginx:

    listen 80;

    server_name www.yoursite.com yoursite.com;

    index index.html index.htm index.php default.html default.htm default.php;

    root  /home/wwwroot/www.yoursite.com;

    if ($http_host !~ "^www.yoursite.com$") {

    rewrite ^/(.*) https://www.yoursite.com/$1 permanent;}

2、和上文提到过的一样,修改 wp-config.php 文件和后台站点URL等设置,如果后台打不开,可以通过 PhpMyadmin 修改 Wordpress 数据库里 wp-option 表的相关字段值来实现。

3、登陆 Cloudflare ,切换到 SSL/TLS 模块,Overview 中选择 Flexible

4、点击 Edge Certificates,添加一个免费的证书,自动续期的, 打开Always Use HTTPS

5,Wordpress 后台删除缓存和浏览器缓存,成功!

总结

我这个笨方法的原理就是,服务器只负责来处理不带 www 的网址跳转到带 www 的网址,Cloudflare 负责 http 到 https 的301重定向。当然,我知道老鸟们有其他方法也可以实现,本文只是希望能够给像我一样,初次接触 Wordpress 的朋友一个参考,多一个解决问题的方法。

在不断的修改中,很有可能因为各种缓存问题耗费很长的时间来调试,这里有个好方法,就是禁用各种缓存,比如:

禁用 Wordpress 的 WP Super Cache;

打开 Cloudflare 的 Development Mode;

每一次修改后,新开一个浏览器的隐私模式;

甚至你也可以每次都清空电脑的 DNS 缓存,换一个新的IP。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。