
📌 背景与痛点
众所周知,WordPress 默认需要在后台硬编码指定**“WordPress 地址(URL)”和“站点地址(URL)”**,只有通过这两个完全一致的域名才能正常访问站点。这种机制虽然提升了网站的安全性,但也带来了不少限制。
例如:在进行站点迁移、多域名绑定或者本地开发测试时,常常会因为本地环境与线上配置的固定 URL 不匹配,直接导致网站无法访问、后台无法登录,甚至前端样式错乱。虽然通过修改本地 hosts 文件可以临时绕过限制,但频繁切换依然非常繁琐。
本文将介绍一种一劳永逸的配置方法,从根本上解除域名的硬性绑定,实现动态 URL 访问。
🛠️ 实现方式
整个修改过程非常简单,只需要编辑 WordPress 的核心配置文件即可。具体步骤如下:
1. 找到配置文件
wp-config.php 是 WordPress 的核心配置文件,它始终存放在 WordPress 网站的根目录下。根据你使用的服务器环境或面板不同,其在宿主机上的绝对路径通常如下:
💻 本地开发环境(XAMPP / MAMP):在你的虚拟主机根目录(如 htdocs 或 www)的程序主文件夹下。
🚀 1Panel 面板(默认路径):/opt/1panel/apps/wordpress/wordpress/data/wp-config.php
🐳 DPanel 面板(默认 Docker 路径):/home/dpanel/compose/你的应用标识/wp-config.php
📂 宝塔面板(常规环境):/www/wwwroot/你的网站域名/wp-config.php
🐧 Linux 原生环境(Nginx/Apache):通常在 /var/www/html/wp-config.php 或 /home/wwwroot/你的网站域名/wp-config.php
2. 添加动态识别代码
打开该文件,滚动到文件末尾。根据你的实际网络需求,选择以下两种方案之一,将代码粘贴进去。
⚠️ 关键注意: 无论选择哪种方案,新添加的代码必须放在原文件自带的
require_once ABSPATH . 'wp-settings.php';这一行的上方,否则配置将无法生效。
💡 方案 A:纯 HTTP 环境(适用于本地局域网或内网测试)
// 动态获取当前访问的域名(固定为 http 协议)
$url_wp = 'http://' . $_SERVER['HTTP_HOST'];
$url_site = 'http://' . $_SERVER['HTTP_HOST'];
define('WP_HOME', $url_wp);
define('WP_SITEURL', $url_site);
/* 下面这行是原文件自带的,请确保它始终处于文件最末尾 */
require_once ABSPATH . 'wp-settings.php';
💡 方案 B:自动识别 HTTP / HTTPS(推荐,完美适配全环境)
如果你的站点部署了 SSL 证书,或者在不同环境下需要自动切换协议,请使用以下代码:
// 自动判断当前访问是 http 还是 https 协议
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
define('WP_HOME', $protocol . $_SERVER['HTTP_HOST']);
define('WP_SITEURL', $protocol . $_SERVER['HTTP_HOST']);
/* 下面这行是原文件自带的,请确保它始终处于文件最末尾 */
require_once ABSPATH . 'wp-settings.php';
👀 效果验证
配置完成后,保存文件并回到 WordPress 站点刷新页面。
此时,你已经可以通过任意绑定的域名、局域网 IP 甚至外网穿透地址直接访问站点。同时,如果你登录进入 WP 后台的【设置】->【常规】,会发现其中的“WordPress 地址(URL)”和“站点地址(URL)”已经变成了灰色不可编辑的状态,这说明动态 URL 配置已经完美生效!