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

如何通过.htaccess将子域名内容映射至对应子目录?

子域名映射到对应子目录的.htaccess解决方案

嘿,这个需求完全可以用Apache的mod_rewrite配合.htaccess实现,我帮你一步步捋清楚具体怎么做:

前提条件

首先得确保你的服务器满足两个基础条件:

  • 已经开启了mod_rewrite模块(大部分主流主机默认都开启了,不确定的话可以查phpinfo或者咨询主机商)
  • 网站根目录的.htaccess文件拥有重写权限(也就是Apache配置里AllowOverride设置为All)

核心.htaccess规则

把下面的代码放到网站根目录的.htaccess文件里,记得把example.com替换成你自己的主域名:

RewriteEngine On

# 排除主域名和www子域名(可选,根据你的需求调整)
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]

# 提取子域名部分(匹配三级域名格式,比如sub.example.com)
RewriteCond %{HTTP_HOST} ^([a-z0-9-_]+)\.example\.com$ [NC]

# 将请求转发到对应子目录,保留原URL路径
RewriteRule ^(.*)$ /%1/$1 [L]

规则拆解说明

我给你解释下每条规则的作用,方便你根据自己的情况调整:

  • RewriteEngine On:开启重写引擎,这是所有重写规则的基础,必须放在最开头
  • 前两条RewriteCond:用来排除主域名和www子域名,避免这些域名被错误映射。[NC]表示匹配时不区分大小写
  • 第三条RewriteCond:用正则表达式捕获子域名部分,比如sub.example.com里的sub会被存到变量%1里。正则里的[a-z0-9-_]+覆盖了大部分合法的子域名字符,如果你的子域名有特殊字符,可以自行添加到正则里
  • RewriteRule:把用户请求的路径(比如sub.example.com/article/1)内部转发到主域名的对应子目录(example.com/sub/article/1),[L]表示这是最后一条规则,处理完就停止后续匹配

实际效果验证

配置好之后,就能实现你要的效果:

  • 访问http://sub.example.com/ → 实际加载http://example.com/sub/的内容
  • 访问http://sub1.example.com/about → 实际加载http://example.com/sub1/about的内容
  • 访问http://sub2.example.com/images/logo.png → 实际加载http://example.com/sub2/images/logo.png的内容

额外注意点

  • 确保每个子域名对应的子目录已经存在于网站根目录,否则会返回404错误
  • 如果你的子域名是多层级的(比如sub.sub2.example.com),需要修改正则表达式来适配,不过大部分场景下三级域名的规则就足够用了
  • 这个规则是内部转发,不会改变地址栏显示的子域名,用户看到的还是sub.example.com,但实际加载的是子目录内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:59:49