You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress多站点.htaccess配置求助:/tr/非shop路径出现404错误

WordPress多站点路径规则修复方案

问题背景

现有双语言WordPress站点A(支持en/tr),计划将另一个WordPress站点B部署在/tr/shop/目录下,需实现以下路由规则:

  • /en/及其所有子路径指向站点A
  • /tr/及其所有子路径(除/tr/shop/外)指向站点A
  • /tr/shop/及其子路径指向站点B

当前问题:/en/和/tr/shop/访问正常,但/tr/下其他路径出现404错误,原因是/tr/是语言前缀而非真实物理目录,原.htaccess规则未正确处理虚拟路径的请求拦截。

修正后的.htaccess代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /

# 优先处理/tr/shop/路径,转发到站点B
RewriteRule ^tr/shop(/.*)?$ /tr/shop/index.php [L]

# 处理/tr/下非shop的路径,转发到站点A
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tr(/.*)?$ /index.php [L]

# 站点A的核心WordPress重写规则
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

代码说明

  1. 规则顺序调整:先匹配/tr/shop/的请求,确保这类请求优先转发到站点B的入口文件,避免被后续规则覆盖。
  2. 虚拟路径处理:针对/tr/下非shop的路径,添加文件/目录存在性判断,仅当请求的路径不是真实文件或目录时,才转发到站点A的index.php,解决虚拟语言前缀导致的404问题。
  3. 移除无效规则:删除原代码中RewriteRule ^tr(/.*)?$ - [L]这条规则,它会直接终止后续重写,导致站点A无法处理/tr/下的虚拟路径请求。

内容的提问来源于stack exchange,提问作者Burak Ibis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:14:59