如何让WordPress多站点创建主域名子站而非嵌套子域名?
解决WordPress多站点创建主域直接子域名站点的问题
第一步:恢复可正常访问的基础配置
先回滚之前修改导致重定向的配置,确保能重新进入多站点管理后台:
- 恢复
wp-config.php中多站点相关的原始定义(有备份用备份,无备份参考初始多站点配置模板) - 恢复
.htaccess为WordPress多站点默认的子域名规则(Apache)或对应Nginx配置
第二步:DNS与服务器虚拟主机配置
- DNS设置:在域名解析后台添加通配符A记录
*.domain.com指向服务器IP;也可以给每个要创建的子域名(如other.domain.com)单独添加A记录。 - 服务器虚拟主机配置:
- Apache:确保
sites.domain.com和*.domain.com的虚拟主机文档根目录指向WordPress多站点的安装目录,示例配置:<VirtualHost *:80> ServerName sites.domain.com ServerAlias *.domain.com DocumentRoot /var/www/html/sites-domain <Directory /var/www/html/sites-domain> AllowOverride All Require all granted </Directory> </VirtualHost> - Nginx:配置包含
sites.domain.com和*.domain.com的server块,文档根目录指向WP安装目录,示例:server { listen 80; server_name sites.domain.com *.domain.com; root /var/www/html/sites-domain; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
- Apache:确保
第三步:修改WordPress核心配置
编辑wp-config.php,调整多站点相关定义:
define('WP_ALLOW_MULTISITE', true); define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', 'domain.com'); // 替换为主域名,去掉www和sites前缀 define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); // 避免跨域Cookie问题导致的重定向 define('COOKIE_DOMAIN', '');
第四步:更新重写规则
- Apache:替换
.htaccess内容为以下多站点子域名规则:RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L] - Nginx:确保server块中已经包含正确的
try_files规则(参考第二步的Nginx配置)
第五步:创建主域直接子域名站点
- 清除浏览器缓存和Cookie,重新登录多站点管理后台
- 进入「我的站点」→「网络管理」→「站点」→「添加新站点」
- 站点地址填写
other.domain.com(直接使用主域的子域名,无需嵌套sites前缀),完成创建
常见问题排查
- 若仍重定向到
www.domaine.com:检查服务器是否有强制重定向规则(比如Apache的Redirect指令、Nginx的return 301规则),确保sites.domain.com和子域名未被强制跳转到主域 - 子站点访问404:确认DNS解析生效,虚拟主机配置正确,重写规则已启用(Apache需开启
mod_rewrite,Nginx需确保try_files规则正确)
内容的提问来源于stack exchange,提问作者Jim1120
相关产品推荐
相关产品推荐

