使用CloudFlare和OpenShift以及WordPress应用程序重定向循环

时间:2015-09-18 02:25:41

标签: php .htaccess dns openshift cloudflare

我在OpenShift上创建了我的WordPress应用程序,它响应了URL blog-porta8080.rhcloud.com。

我在OpenShift上创建了2个别名

enter image description here

我从巴西注册商处购买了我的域名(porta8080.com.br),该域名不允许我添加CNAME记录而没有像www这样的子域名。

所以我在CloudFlare上创建了一个帐户,注册了我的域名并将我的域名移到了CloudFlare DNS服务器上。

enter image description here

然后我向CloudFlare添加了2条CNAME记录

enter image description here

我甚至安装了他们说会帮助我的CloudFlare插件

https://wordpress.org/plugins/cloudflare/

但是当我转到http://porta8080.com.br时,由于重定向循环错误,它无法加载页面。我在chrome和Firefox上测试过,两者都抛出相同的错误。 Chrome说" ERR_TOO_MANY_REDIRECTS"并检查请求,它给了我几个" 301错误:永久移动"

enter image description here

wp-admin页面没有给我一个错误。我唯一能想到的就是它自己的.htaccess文件。

这是我的.htaccess(Openshift中的那个可能没有blog/部分,我只更改了两者中的固定链接,并且在我的机器上生成了.htaccess)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

有什么想法吗?

@Edit

我的.htaccess确实存在问题。我对它进行了评论并在索引文件上添加了一条消息,它通过www和没有它来实现。

你能猜到为什么吗?

1 个答案:

答案 0 :(得分:1)

当您使用CloudFlare的灵活SSL选项和WordPress时,这是一个有趣的问题。 WordPress,在它的核心,有一个is_ssl功能,不会考虑反向代理。因此,当您重定向到SSL时,您可以获得a redirect loop if using Flexible SSL

解决此问题的最简单方法是在Apache上install Mod_cloudflare

相反,您可以将if语句添加到wp-config.php文件中以解决此问题:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS'] = 'on';
}

如果您使用此方法而不是安装Mod_cloudflare,请确保使用&#34; X-Forwarded-Proto&#34;用于任何重定向的标头而不是SSL。