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

如何使用RewriteMap将域名重定向至对应子域名?

正确的RewriteMap域名重定向配置方案

前提注意

RewriteMap指令不能直接放在.htaccess文件中,必须配置在Apache主配置文件(httpd.conf)或虚拟主机配置(vhost.conf)内,否则会触发服务器错误。先确保你已经在全局配置中添加了:

RewriteMap domainMap txt://path/to/map.txt

以下是实现需求的.htaccess完整配置:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# 将外部域名(含www前缀)重定向到map.txt对应的子域名
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
# 检查当前域名在map.txt中是否存在匹配条目
RewriteCond ${domainMap:%1|NOT_FOUND} !NOT_FOUND
# 执行重定向,保留原请求路径,使用301永久重定向
RewriteRule ^ https://${domainMap:%1}%{REQUEST_URI} [L,R=301]

配置细节解释

  1. 域名提取:RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$会自动去掉域名的www.前缀,提取核心域名部分(比如www.exmple.com提取为exmple.com,test.com直接保留为test.com)。
  2. 匹配校验:${domainMap:%1|NOT_FOUND}表示如果%1(提取的核心域名)在map中无匹配,则返回NOT_FOUND,这条规则确保只有map中存在的域名才会触发重定向,避免无匹配时出现异常。
  3. 完整重定向:%{REQUEST_URI}会保留原请求的路径,比如访问exmple.com/about会直接重定向到mm.site.com/about;R=301为永久重定向,若需要临时重定向可改为R=302。

你原有配置的问题点

  1. 第一条规则逻辑倒置:你原本的规则是匹配*.site.com的子域名去查找映射,和“外部域名重定向到子域名”的需求完全相反。
  2. 第二条规则未实现跳转:这条规则是将请求转发到服务器内部的/%1/$1路径,并非跳转到目标子域名,不符合重定向的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:22:45