迁移至Cloudflare后WordPress/wp-admin后台无法访问求助
WordPress迁移Cloudflare后/wp-admin重定向到http://$domain/wp-admin/的解决方法
问题根源
出现$domain这种未解析的变量,核心原因是Apache配置里的重定向规则引用了未正确解析的变量,再加上Cloudflare的HTTPS配置与WordPress站点URL设置冲突,导致重定向规则里的变量直接以字符串形式返回给客户端。
解决步骤
1. 排查并修复Apache重定向配置
- 登录服务器,打开WordPress根目录下的
.htaccess文件,或者Apache虚拟主机配置文件(如/etc/apache2/sites-available/your-site.conf) - 查找包含
$domain的重定向规则,比如可能存在这类错误代码:
这里的Redirect 301 /wp-admin http://$domain/wp-admin/$domain要么是未在Apache中定义的变量,要么是变量名错误,导致无法被解析。 - 修复方案:直接替换为你的实际域名,或者使用Apache内置的
%{HTTP_HOST}变量(自动获取请求域名),同时强制HTTPS:Redirect 301 /wp-admin https://%{HTTP_HOST}/wp-admin/
2. 强制WordPress使用HTTPS站点URL
- 若无法登录wp-admin,直接修改
wp-config.php文件(WordPress根目录下),添加以下代码:
把define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com'); define('FORCE_SSL_ADMIN', true);example.com换成你的实际域名,FORCE_SSL_ADMIN会强制后台走HTTPS,避免HTTP跳转引发的问题。
3. 调整Cloudflare的HTTPS设置
- 登录Cloudflare控制台,进入你的站点:
- 转到SSL/TLS -> 概述,将SSL模式设置为完全或严格(不要用“灵活”模式,灵活模式会导致源站与Cloudflare之间用HTTP,易引发重定向混乱)
- 检查规则 -> 页面规则,确认没有针对
/wp-admin的错误重定向规则。
4. 清除缓存
- 在Cloudflare控制台的缓存 -> 配置中,点击「清除缓存」->「清除整个缓存」
- 清除浏览器的缓存和Cookie,避免旧的重定向规则被缓存。
验证
完成上述操作后,用命令行验证:
http -v get https://example.com/wp-admin
如果返回的Location头是https://example.com/wp-admin/(带实际域名和HTTPS),说明问题已解决。
内容的提问来源于stack exchange,提问作者tonsteri
相关产品推荐
相关产品推荐

