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。。。

未经允许不得转载:火哥分享 » WordPress 服务器使用 Cloudflare 配置 SSL

赞 (1)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址