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

如何通过.htaccess实现子域名重写映射到指定子目录并传递参数

.htaccess子域名重写规则调整方案

问题根源

你现有规则无法生效有两个核心原因:

  • 规则顺序错误:通配范围更广的首页规则放在了前面,且携带[L]标记,命中后会直接终止后续规则执行,分类规则永远不会被触发
  • 参数提取错误:你使用$1获取子域名前缀,但$1实际是RewriteRule匹配到的请求路径内容,无法拿到子域名的sub值

调整后的规则

动态子域名适配(适配任意前缀的子域名,自动提取前缀作为user参数)

RewriteEngine On

# 优先处理分类页请求
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule ^mycategory/?$ /subdomains/category.php?user=%1 [L,NC,QSA]

# 再处理首页请求
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule ^$ /subdomains/index.php?user=%1 [L,NC,QSA]

固定sub子域名适配

如果你仅需要适配sub.example.com这一个子域名,可以用更简单的写死规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub\.example\.com$ [NC]
RewriteRule ^mycategory/?$ /subdomains/category.php?user=sub [L,NC,QSA]

RewriteCond %{HTTP_HOST} ^sub\.example\.com$ [NC]
RewriteRule ^$ /subdomains/index.php?user=sub [L,NC,QSA]

规则说明

  • %1 用于读取前面对应RewriteCond中第一个括号捕获的内容,也就是子域名的前缀部分
  • 分类规则的匹配模式^mycategory/?$同时兼容带尾斜杠和不带尾斜杠的访问路径
  • 如果需要子域名下所有未匹配到规则的请求都走首页,可以将最后一条RewriteRule的匹配规则改为^(.*)$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:27:01