将WordPress切换为https后,重定向过多

时间:2015-04-06 20:10:45

标签: wordpress .htaccess

使用我的WordPress-Blog,我切换到https。因此,我已将以下代码添加到我的.htaccess-File中。我现在的问题是,我得到的问题是“太多重定向”。感谢您的提示!

域名是子域名:

https://en.example.com

# Begin Force SSL
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
# End Force SSL
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

8 个答案:

答案 0 :(得分:33)

确保在wp-config.php中定义WP_SITEURL和WP_HOME

define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');

并添加此条件以检查wps-config.php中的https是否

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

答案 1 :(得分:18)

我使用wp-config.php中的以下代码解决了这个问题

serial

答案 2 :(得分:5)

尝试将前三行更改为:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

相信,除非您尝试转到https://en.example.com/:443,否则{SERVER_PORT}将永远不会返回443。

答案 3 :(得分:5)

我有同样的问题nginx并且必须做以下 在.htaccess

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
wp-config.php

中的

define('FORCE_SSL_ADMIN', true);
define('RELOCATE', TRUE);
$_SERVER['HTTPS'] = 'on';
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');

不要使用下面的nginx,除非你确定它通过HTTPS启用快速cgi,否则它将无效,

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

在nginx的错误日志中可能有利于日志调试级别,这就是你如何看待流程。

答案 4 :(得分:3)

确保在WP_SITEURL处定义WP_HOMEwp-config.php

define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');

并添加此条件以检查wp-config.php上的https

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

这很好用

答案 5 :(得分:2)

摘录:在 wp-config.php 文件的开头添加以下代码行可以解决重定向冲突。

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
   $_SERVER['HTTPS']='on';

答案 6 :(得分:1)

如果使用Cloudflare和Nginx:

1-转到云端,在页面规则中添加始终使用HTTPS。

2-将以下代码添加到wp-config.php

define('WP_HOME','https://example.com/blog');
define('WP_SITEURL','https://example.com/blog');

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

注意:请勿更改数据库中的任何内容并使用隐身模式。

答案 7 :(得分:0)

不是直接的答案,但还有一点要注意的是,某些浏览器将缓存重定向,因此您可能在更改htaccess或wp-config时未看到任何更改。

调试此问题的最佳方法是使用隐身模式。

以上答案对我有用,但是花了很多时间才知道它们实际上是有效的,因为浏览器重定向缓存了!