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

web.config rewrite规则如何编写正则匹配*/admin*格式的URL

正确的web.config rewrite匹配规则

首先明确IIS rewrite模块中<match>的url属性匹配逻辑:默认匹配域名后、查询字符串前的路径部分,且自动去掉开头的斜杠,所以正则不需要额外加前导/。


正确的正则表达式

要满足匹配admin作为独立路径段出现、同时排除adminpage这类admin作为前缀的场景,正则写为:

^(.*?/)?admin(/.*)?$

对应web.config配置写法

<match url="^(.*?/)?admin(/.*)?$" ignoreCase="false" />

如果需要URL不区分大小写(通用场景更常用),把ignoreCase改为true即可。


正则逻辑说明

  • ^ 匹配路径开头
  • (.*?/)? 可选匹配admin之前的任意路径段(比如xxx/yyy/这类前缀),问号表示非贪婪匹配,避免不必要的性能消耗
  • admin 精确匹配路径段admin
  • (/.*)? 可选匹配admin之后的斜杠加任意路径后缀(比如/test、/a/b/c/这类后缀)
  • $ 匹配路径结尾

匹配验证

命中(合法匹配)

  • admin → 对应URL http://test.com/admin
  • admin/ → 对应URL http://test.com/admin/
  • admin/test → 对应URL http://test.com/admin/test
  • xxx/admin → 对应URL http://test.com/xxx/admin
  • xxx/admin/grgr/hht/ → 对应URL http://test.com/xxx/admin/grgr/hht/

不命中(非法匹配)

  • 空路径 → 对应URL http://test.com
  • adminpage → 对应URL https://test.com/adminpage
  • adminpage/ → 对应URL https://test.com/adminpage/
  • xxx/adminpage → 对应URL https://test.com/xxx/adminpage

之前写法失效原因

  1. <match url="(.*)/admin$" ignoreCase="false" />:$限定了admin必须在路径末尾,admin/xxx这类带后缀的路径无法匹配;同时加了前导斜杠不符合IIS的匹配逻辑。
  2. <match url="/admin?" ignoreCase="false" />:前导斜杠不符合匹配逻辑;?表示前一个字符n可选,会匹配到admi这类错误内容,也没有限制admin后面不能跟其他非斜杠字符,会误匹配adminpage。
  3. <match url=".*/admin?" ignoreCase="false" />:同样存在?的逻辑错误,没有限定admin后面的字符规则,会误匹配adminpage类路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:09:04