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

如何用.htaccess将GET参数company值转为子域名并排除/api目录

前提配置

  • 已配置泛域名解析:*.example.com 全部解析到你的Web服务器站点根目录
  • Apache 已开启 mod_rewrite 扩展,站点配置中 AllowOverride 设置为 All 允许.htaccess生效

.htaccess 完整配置

RewriteEngine On

# 排除/api目录下所有请求,不执行后续重写规则
RewriteRule ^api(/.*)?$ - [L,NC]

# 旧URL(主域名带company参数)301重定向到子域名格式
# 匹配主域名example.com(含www前缀的情况)
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
# 提取QUERY_STRING中的company参数值,同时保留其余参数
RewriteCond %{QUERY_STRING} (?:^|&)company=([^&]+)(?:&(.*))?$ [NC]
# 重定向到子域名格式,保留原有路径和其余GET参数,移除company参数
RewriteRule ^(.*)$ https://%1.example.com/$1?%2 [L,R=301,NE]

# 子域名格式URL内部重写,服务器端隐式添加company参数,用户无感知
# 匹配非www的子域名,提取子域名作为company参数值
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.example\.com$ [NC]
# 防止循环重写:仅当QUERY_STRING中无company参数时执行
RewriteCond %{QUERY_STRING} !(?:^|&)company= [NC]
# 内部追加company参数,原有GET参数全部保留
RewriteRule ^(.*)$ $1?company=%1 [QSA,L]

规则说明

  • [NC]:不区分大小写匹配
  • [L]:当前规则匹配后不再执行后续规则
  • [R=301]:返回301永久重定向,对SEO友好;测试阶段可改为R=302临时重定向,避免浏览器缓存错误规则
  • [NE]:不对特殊字符进行URL编码,避免参数异常
  • [QSA]:追加原有查询字符串,保证原有其他GET参数全部保留
  • 规则中的(?!www\.)是排除www子域名,避免www.example.com被误识别为company参数值

测试建议

测试阶段先把301重定向改为302,确认所有跳转、参数保留、api目录排除逻辑完全正常后,再改回301正式上线。如果规则不生效,先检查泛域名解析、mod_rewrite扩展是否开启,以及站点配置是否允许.htaccess文件生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:24:04