WordPress子目录多站点新增子站重定向循环故障求助
WordPress子目录模式多站点新增子站重定向循环修复
这个问题和主站部署在子域名没有关系,子域名上跑子目录模式多站点是官方原生支持的架构,你之前加的Cookie配置仅对后台登录跳转有效,对前台访问循环无效,不用再纠结这部分配置。按以下优先级排查即可:
1. 第一优先级:核对多站点核心数据表字段值
主站、第一个子站正常,仅后续新增子站出问题,90%以上是新增站点写入数据库时路径字段值错误导致的,直接查库核对:
- 检查
wp_site表:domain字段值必须为multisite.domain.com,path字段值必须为/,不能带多余斜杠、多余路径 - 检查
wp_blogs表所有站点记录:- 主站(blog_id=1):
domain=multisite.domain.com,path=/ - site1(blog_id=2):
domain=multisite.domain.com,path=/site1/ - site2(blog_id=3):
domain=multisite.domain.com,path=/site2/ - site3(blog_id=4):
domain=multisite.domain.com,path=/site3/
- 主站(blog_id=1):
关键校验点:子站的
path字段必须同时带开头、结尾的斜杠,漏写尾斜杠写成/site2、漏写头斜杠写成site2/都会触发WordPress的路径补全逻辑,反复301跳转形成死循环。如果之前做过站点迁移、修改过主站域名,WordPress很可能把旧路径缓存后写入新增站点记录,就会出现第一个手动修正过的子站正常、后续自动生成的子站全异常的现象。
- 检查每个子站独立options表的配置:site2对应
wp_3_options、site3对应wp_4_options,表中siteurl、home两个选项值必须为对应站点的根地址,比如site2对应https://multisite.domain.com/site2,不要带尾斜杠,不要多写路径。
2. 第二优先级:核对Apache配置
你贴的.htaccess规则是WordPress官方给出的子目录多站点标准规则,本身没有错误,问题大概率出在Apache虚拟主机配置上:
- 确认站点根目录对应的Directory配置中开启了全量规则覆写:
<Directory /var/www/你的站点根目录实际路径> AllowOverride All Require all granted </Directory>
如果AllowOverride配置为None或者仅开放部分权限,.htaccess里的重写规则不会生效,部分路径能访问只是刚好命中Apache的目录索引规则。
- 确认已经开启rewrite模块,执行
a2enmod rewrite后重启Apache服务即可。
3. 第三优先级:清理缓存与冲突项
- 全量清空对象缓存:如果站点开启了Redis、Memcached等持久化缓存,必须清空所有缓存数据,WordPress多站点会把站点路径配置存在缓存里,改完数据库不清缓存不会生效。
- 清理本地301缓存:浏览器会永久缓存301跳转记录,测试时不要用普通窗口,直接开无痕模式访问,或者用curl直接看服务端响应头判断跳转逻辑:
curl -I https://multisite.domain.com/site2
正常逻辑只会有1次301跳转到带尾斜杠的/site2/地址,随后返回200状态码,如果出现连续多次跳转到同一地址的情况,说明服务端配置仍有错误。
- 排查物理路径冲突:确认站点根目录下没有和site2、site3同名的真实文件/文件夹。Apache重写规则优先匹配真实存在的路径,如果根目录下刚好有命名为site2的文件夹,请求不会转给WordPress处理,直接走Apache目录逻辑也会触发跳转异常。site1能正常访问,基本可以对应验证:根目录下不存在名为site1的真实目录。
内容的提问来源于stack exchange,提问作者user1235285
相关产品推荐
相关产品推荐

