求匹配特定子域名的正则表达式(IIS与ARR请求解析场景)
精准匹配特定子域名abc.example.com的ARR配置方案
我明白你要的是只锁定abc.example.com这一个特定子域名,而非通配所有子域名,之前我也踩过类似的坑,给你一步步说怎么在ARR里配置,完美覆盖你列出的所有场景(HTTP/HTTPS、带路径、带参数):
核心思路
ARR的路由逻辑依赖IIS的URL重写模块,我们不需要在URL路径上做复杂匹配,而是通过**校验请求的主机头(HTTP_HOST)**来精准锁定目标子域名,路径和参数不影响匹配判断,这样就能覆盖所有你提到的场景。
具体配置步骤
- 打开IIS管理器,找到你要配置的站点(也可以直接在服务器级别配置全局规则),点击右侧面板的URL重写
- 点击右侧的添加规则,选择空白规则(别用预定义模板,避免冗余配置)
- 逐个配置规则的各个部分:
- 名称:起个好记的就行,比如
Match abc.example.com - 匹配URL:
- 匹配类型:选「正则表达式」
- 模式:填
^.*$(这个模式会匹配所有路径和参数,我们只关心主机头部分) - 勾选「忽略大小写」
- 条件:点击「添加」按钮,新增一个条件:
- 条件输入:选择
{HTTP_HOST}(这个服务器变量会获取请求的主机头,比如abc.example.com) - 检查输入字符串:选「与模式匹配」
- 模式:填
^abc\.example\.com$(注意这里的.要加反斜杠转义——正则里.代表任意字符,转义后才是实际的点;^和$确保完全匹配,不会误命中abc1.example.com或者abc.example.com.cn这类相似域名)
- 条件输入:选择
- 操作:根据你的需求选对应的操作类型(ARR常用的是「路由到服务器组」,也可以选「重写」「重定向」):
- 如果是反向代理到后端服务器组:操作类型选「路由到服务器组」,然后选择你预先配置好的服务器组
- 如果是重写URL:操作类型选「重写」,在「重写URL」里填目标地址,比如
http://backend-server/{R:0}({R:0}会完整保留原路径和参数)
- 名称:起个好记的就行,比如
- 点击「应用」保存规则
为什么这个方案能覆盖所有场景?
- 不管是HTTP还是HTTPS请求,
{HTTP_HOST}的值都是abc.example.com,所以条件都会命中 - 路径(比如/xyz)和查询参数(比如?q=123)都被
^.*$的URL模式匹配,不会干扰主机头的判断,所以所有带路径、带参数的请求都会被正确识别
注意事项
- 确保你已经安装了ARR(Application Request Routing)和URL重写模块,如果没装,直接从IIS管理器的「Web平台安装程序」里搜索安装即可
- 如果是HTTPS请求,要确保站点配置了正确的SSL证书,并且ARR的SSL终止(如果需要)已经设置妥当,避免HTTPS请求无法被正确捕获
- 配置完可以用URL重写的「测试规则」功能验证:输入各种测试URL(比如https://abc.example.com/xyz?q=123),查看是否命中规则
内容的提问来源于stack exchange,提问作者Gabbar
相关产品推荐
相关产品推荐

