使用SSL的无限重定向循环

时间:2014-03-03 13:17:25

标签: wordpress apache .htaccess redirect ssl

我在nginx代理后面的apache上有一个wordpress站点。 我已经配置了SSL,现在我无法预览草稿帖子,它们最终会以无限重定向循环到同一个网址。

在我们的wp-config中,我们有:

 define( 'FORCE_SSL_LOGIN', true );
 define( 'FORCE_SSL_ADMIN', true );
 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

我们有aph root的.htaccess:

RewriteEngine on 

RewriteCond %{REQUEST_URI} !^/Site/ 
RewriteCond %{REQUEST_URI} !^/phpMyAdmin/ 
RewriteRule ^(.*)$ /Site/$1 

RewriteCond %{REQUEST_URI} !^/phpMyAdmin/ 
RewriteRule ^(/)?$ /Site/index.php [L]

我们有Site文件夹的.htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

如果我在http中访问帖子预览,它可以工作: http://my.domain/?post_type=portfolio&p=3405&preview=true

但是使用https,它会反复重定向(301)到同一个网址: https://my.domain/?post_type=portfolio&p=3405&preview=true

我在wordpress index.php中添加了一个输出缓冲区,所以我可以在日志中看到,当访问安全链接时,它会生成post预览html,因此重定向必须在返回的路上发生,之后php引擎生成了帖子预览。

对于安全链接,在我看到的apache访问日志中,所以我认为nginx不会导致问题:

“GET /?post_type = portfolio& p = 3405& preview = true HTTP / 1.0”301

我们使用永久链接,因此预览发布的帖子在http和https中都没有任何问题。 有什么想法吗?

谢谢, 利奥尔

1 个答案:

答案 0 :(得分:0)

提供的代码是检查X-Forward-Proto标头是否设置为https。你需要确保nginx在前进中添加它 - 如下所示:

location / {
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass http://127.0.0.1:10554;
}