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

WordPress动态子域名映射子目录.htaccess规则失效问题

问题分析与修正方案

你的.htaccess代码存在三个关键错误,导致子域名映射无法达到预期效果:

1. 子域名正则匹配错误

原规则里的^([a-z0-9]).example.com(.*)$有两处问题:

  • ([a-z0-9])仅匹配单个字符,但你的子域名是apple这类多字符内容,应该改成([a-z0-9-]+)来匹配完整子域名(支持字母、数字和连字符)。
  • HTTP_HOST只包含域名部分,不会附带路径,末尾的(.*)$完全多余,会直接导致匹配失败。

2. 规则顺序错误

WordPress规则块里带有[L]标志,意味着匹配到WP规则后就会停止处理后续规则。你把自定义子域名规则放在WP规则之后,导致这些规则根本不会被执行,必须将自定义规则移到# BEGIN WordPress之前。

3. 错误使用301重定向

原规则用了R=301,这会让浏览器跳转到真实子目录URL(用户能看到地址栏变化),但你需要的是内部映射(保持子域名显示,后台加载子目录内容),所以要去掉R=301,改用内部重写逻辑。


修正后的完整.htaccess代码

<IfModule mod_rewrite.c>
RewriteEngine On
# 处理动态子域名映射(必须放在WP规则之前)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.example\.com$ [NC]
# 内部重写到对应子目录,保留请求的后续路径
RewriteRule ^(.*)$ /subfolder/%1/$1 [L]
</IfModule>

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

补充说明

  • %1对应HTTP_HOST匹配到的子域名(比如apple),$1对应请求的路径(比如page/demo),组合后就是目标路径/subfolder/apple/page/demo。
  • 确保服务器上subfolder/apple目录存在,同时检查WordPress固定链接设置,避免路径冲突。
  • 如果站点使用HTTPS,无需额外修改域名协议,代码里的相对路径会自动适配当前协议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:04:59