一、核心问题:你踩了 WordPress 最经典的「域名切换死循环」坑
你把 siteurl/home 从 http://192.168.10.108:8084 改成 https://sc.frp.yelingai.icu 后:
- 本地用 IP 访问:WordPress 会强制跳转到域名(因为
siteurl是域名),而本地没走公网/没配 Hosts,直接打不开 - 公网用域名访问:如果反向代理/FRP 配置有一点偏差,就会出现 404、重定向循环、后台打不开
二、分场景解决,两种方案二选一
✅ 方案1:保留域名配置,让本地IP也能访问(推荐,兼顾公网+本地调试)
1. 先恢复本地IP访问(救急)
在 wp-config.php 里追加这几行代码(不要删之前的域名配置):
<?php
// 保留你之前的域名配置define('FORCE_SSL_ADMIN', false);
define('WP_HOME', 'https://sc.frp.yelingai.icu');
define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
// 如果不想让域名访问后端,就可以去掉这行代码
// define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
define('FORCE_SSL_ADMIN', false);
// 这里设置了true,本地IP访问后端就不能访问,所以设置为false,define('FORCE_SSL_ADMIN', false););
// 新增:自动识别访问方式,本地用IP,公网用域名
if (strpos($_SERVER['HTTP_HOST'], '192.168.10.108') !== false) {
define('WP_HOME', 'http://192.168.10.108:8084');
define('WP_SITEURL', 'http://192.168.10.108:8084');
}
// 保留HTTPS识别代码
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
// 下面是原数据库配置,不动
✅ 效果:
- 本地访问
http://192.168.10.108:8084/wp-admin→ 自动用IP地址,正常打开 - 公网/本机访问
https://sc.frp.yelingai.icu/wp-admin→ 自动用域名,正常打开 - 完美兼容两种访问方式,不用改数据库,不用换Hosts
2. 给本机配Hosts,实现「域名本地秒开」(最优体验)
在你**物理机(本机)**的 C:\Windows\System32\drivers\etc\hosts 里加一行:
192.168.10.108 sc.frp.yelingai.icu
✅ 效果:
- 本机访问
https://sc.frp.yelingai.icu→ 直接指向虚拟机本地,不走公网,秒开后台 - 公网用户访问 → 正常走FRP穿透,不受影响
- 彻底解决「本地IP打不开、域名公网慢」的问题
✅ 方案2:彻底切回本地IP,只在本地用(不推荐,放弃公网)
如果只是本地调试,不想用公网域名,直接改回:
wp-config.php里把WP_HOME/WP_SITEURL改回http://192.168.10.108:8084- 数据库
wp_options表的siteurl/home也改回IP - 公网反向代理/FRP 全部停用,只在本地访问
三、为什么会出现「改了域名本地IP就打不开」?
WordPress 的核心逻辑:
siteurl/home 是网站的唯一官方地址,所有访问都会强制跳转到这个地址。
- 你填了域名:所有访问(包括本地IP)都会被强制跳转到域名
- 本地没配Hosts/没走公网:访问域名时,浏览器找不到服务器,直接打不开
- 公网配置有偏差:跳转到域名后,反向代理没正确转发,后台404
四、给你的最终最优配置(直接照抄)
1. wp-config.php 最终版(完美兼容本地+公网)
<?php
// 自动适配本地IP和公网域名,二选一自动生效
if (strpos($_SERVER['HTTP_HOST'], '192.168.10.108') !== false) {
define('WP_HOME', 'http://192.168.10.108:8084');
define('WP_SITEURL', 'http://192.168.10.108:8084');
} else {
define('WP_HOME', 'https://sc.frp.yelingai.icu');
define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
}
define('FORCE_SSL_ADMIN', false);
// 解决反向代理HTTPS识别问题
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
// 下面是原有的数据库配置,不要动
2. 本机Hosts配置(必须加)
192.168.10.108 sc.frp.yelingai.icu
3. 反向代理配置(你现在的是对的,不用改)
- 目标URL:
http://127.0.0.1:58084(FRP映射的服务器端口) - 发送域名:
$http_host(自动透传域名,完美适配)
五、验证效果
- 本地虚拟机:访问
http://192.168.10.108:8084/wp-admin→ 正常打开 - 物理机(本机):访问
https://sc.frp.yelingai.icu/wp-admin→ 本地秒开,不走公网 - 公网用户:访问
https://sc.frp.yelingai.icu/wp-admin→ 正常穿透访问
六、一句话总结
用「自动识别访问方式」的 wp-config.php 代码,配合本机Hosts映射,完美解决「改了域名本地IP打不开、公网后台访问异常」的问题,本地调试和公网访问两不误。
需要我帮你把这个代码直接适配到你当前的 wp-config.php,生成一份可以直接复制的完整版本吗?
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





暂无评论内容