WordPress后台锁定与重定向循环:无后台修改设置求助
解决WordPress改HTTPS后重定向循环无法登录的问题
这种重定向死循环的坑我之前在Heroku部署WordPress时也踩过,别慌,咱们一步步来搞定它!核心问题是WordPress没正确识别当前的HTTPS环境,或者数据库/配置里的地址还存在冲突,以下是几种无后台访问权限时的解决方法:
1. 修正wp-config.php配置(最优先尝试)
你之前只改了WP_SITEURL,但漏掉了几个关键配置,尤其是Heroku环境下的反向代理识别,这才导致重循环。打开你的wp-config.php文件,替换相关配置为:
// 设置正确的HTTPS站点地址 if (getenv("WORDPRESS_SITEURL")) { define('WP_SITEURL', 'https://some_app.herokuapp.com/'); define('WP_HOME', 'https://some_app.herokuapp.com/'); } else { define('WP_SITEURL', 'https://some_app.herokuapp.com/'); define('WP_HOME', 'https://some_app.herokuapp.com/'); } // 强制后台和登录页使用HTTPS define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); // 关键:让WordPress识别Heroku的反向代理HTTPS请求 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; }
为什么之前没生效?因为Heroku的请求是通过代理转发到你的应用的,WordPress默认会认为当前是HTTP协议,所以不断把你重定向到HTTPS,形成循环。上面的代码就是告诉WordPress:如果代理传来的是HTTPS,就认定当前是HTTPS环境。
2. 直接修改数据库中的站点地址
如果wp-config改完还是不行,那大概率是数据库里还存着旧的HTTP地址。你可以通过phpMyAdmin(如果有访问权限)或者Heroku的数据库命令行来修改:
步骤:
- 找到你的WordPress数据库,打开
wp_options表(注意:如果你的表前缀不是wp_,要替换成实际前缀) - 找到
option_name为siteurl和home的两条记录,把它们的option_value都改成https://some_app.herokuapp.com/
如果用MySQL命令行执行,代码如下:
UPDATE wp_options SET option_value = 'https://some_app.herokuapp.com/' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'https://some_app.herokuapp.com/' WHERE option_name = 'home';
3. 调整.htaccess文件(适用于Apache环境)
如果你的应用用的是Apache服务器,还可以通过.htaccess强制HTTPS跳转,同时适配Heroku的代理环境。替换你的.htaccess内容为:
RewriteEngine On # 强制所有HTTP请求跳转到HTTPS(适配Heroku代理) RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] # WordPress默认重写规则,不要动下面的 RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
注意:
- 如果你用的是Nginx,那需要调整Nginx配置文件,添加类似的HTTPS强制跳转规则,同样要注意X-Forwarded-Proto头的判断。
一般来说,先试第一种方法(修正wp-config)就能解决Heroku上的这个问题,因为核心是代理环境的HTTPS识别。
内容的提问来源于stack exchange,提问作者Nick Ellis
相关产品推荐
相关产品推荐

