如何在同一WordPress站点配置多域名,仅各域名首页不同?
多域名多语言首页配置方案(仅首页差异化)
一、前期准备
- 把所有目标域名解析到当前WordPress服务器的IP,同时在服务器(Nginx/Apache)配置中,将这些域名指向同一个WordPress站点的根目录。
- 在WordPress后台创建对应语言的专属首页:比如为
abc.com创建中文首页,编辑好内容后记录页面ID(编辑页面时,URL里post=xxx的xxx就是页面ID)。
二、通过代码实现域名匹配切换首页
在当前主题的functions.php文件末尾添加以下代码,替换其中的域名和对应页面ID:
add_filter('pre_get_posts', 'custom_domain_homepage'); function custom_domain_homepage($query) { // 仅处理首页的主查询 if ($query->is_home() && $query->is_main_query()) { // 根据访问域名匹配对应首页 switch($_SERVER['HTTP_HOST']) { case 'abc.com': $query->set('page_id', 123); // 替换为abc.com对应首页的页面ID break; case 'def.com': $query->set('page_id', 456); // 替换为def.com对应首页的页面ID break; // 新增其他域名时,按这个格式继续添加分支 default: $query->set('page_id', 789); // 替换为默认域名xyz.com的首页ID break; } } return $query; }
三、后台固定首页设置
进入WordPress后台「设置」→「阅读」,将「您的首页显示」设置为「静态页面」,并把「首页」暂时选择默认的英文首页。上述代码会自动根据访问域名覆盖这个默认设置。
四、缓存配置优化(可选)
如果站点使用了缓存插件(如WP Rocket、W3 Total Cache),需要在缓存规则中添加域名维度的区分,避免不同域名的首页缓存互相覆盖。
以Nginx为例,在站点配置中修改缓存键规则:
set $cache_key "$scheme$request_method$host$request_uri";
确保缓存键包含$host字段,这样不同域名的首页会生成独立的缓存文件。
五、语言标识补充(可选)
如果需要给不同域名的首页设置对应HTML语言标识,可在主题的header.php文件中添加判断:
$lang = 'en-US'; if($_SERVER['HTTP_HOST'] == 'abc.com') { $lang = 'zh-CN'; } elseif($_SERVER['HTTP_HOST'] == 'def.com') { $lang = 'ja-JP'; } ?> <html lang="<?php echo $lang; ?>">
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

