如何让同一WordPress站点在两个不同URL下运行?
实现单WordPress实例多域名差异化展示方案
核心前提
先完成基础域名配置:
- 将两个域名(如
www.brand1.com和www.brand2.com)指向同一服务器主机,在主机面板中添加为别名域名(不同主机可能叫Parked Domain/Addon Domain)。 - 修改
wp-config.php,添加动态域名配置,避免固定URL导致的资源加载异常:define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);
差异化内容实现(两种可选方案)
1. PHP后端判断(更可靠,不受前端JS禁用影响)
在主题文件或自定义插件中,通过当前访问域名输出差异化内容:
- 替换品牌Logo示例:
$current_domain = $_SERVER['HTTP_HOST']; if ($current_domain === 'www.brand1.com') { echo '<img src="' . get_stylesheet_directory_uri() . '/assets/brand1-logo.png" alt="Brand 1">'; } elseif ($current_domain === 'www.brand2.com') { echo '<img src="' . get_stylesheet_directory_uri() . '/assets/brand2-logo.png" alt="Brand 2">'; } - 替换广告示例:
可以配合WordPress自定义字段功能,在后台统一管理两个域名的广告代码。if ($current_domain === 'www.brand1.com') { echo '<div class="ad-block">' . get_option('brand1_ad_code') . '</div>'; } else { echo '<div class="ad-block">' . get_option('brand2_ad_code') . '</div>'; }
2. JavaScript前端实现(适合快速迭代场景)
在主题footer.php或自定义JS文件中,通过当前域名替换页面元素:
- 替换Logo和广告示例:
const currentDomain = window.location.hostname; // 替换Logo const logo = document.querySelector('.site-header .logo'); if (currentDomain === 'www.brand1.com') { logo.src = '/wp-content/themes/your-theme/assets/brand1-logo.png'; logo.alt = 'Brand 1'; } else if (currentDomain === 'www.brand2.com') { logo.src = '/wp-content/themes/your-theme/assets/brand2-logo.png'; logo.alt = 'Brand 2'; } // 替换广告容器内容 const adContainer = document.getElementById('main-ad'); if (currentDomain === 'www.brand1.com') { adContainer.innerHTML = '<div class="brand1-ad">Brand1专属广告</div>'; } else { adContainer.innerHTML = '<div class="brand2-ad">Brand2专属广告</div>'; }
服务器配置补充
- Apache:保持默认WordPress的
.htaccess规则即可,无需额外修改路径重写。 - Nginx:在server块中添加两个域名作为
server_name:server { listen 443 ssl; server_name www.brand1.com www.brand2.com; root /var/www/wordpress; index index.php; # 其他WordPress常规Nginx规则(如伪静态、SSL配置) }
注意事项
- 为两个域名配置统一的SSL证书(通配符证书或多域名证书),确保HTTPS访问正常。
- 禁用WordPress多站点(Multisite),避免数据库表分离导致的数据不共享问题。
- 测试前清空浏览器缓存和服务器缓存,避免旧资源干扰。
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

