IIS 中 URL 重写的正则表达式“^$”

问题描述 投票:0回答:1

我有以下正则表达式,用于在 IIS 中的 URL 重写中进行模式匹配,这是我的前任设置的:

 ^$

我对正则表达式知之甚少,今天早上阅读的内容并没有帮助我弄清楚这个正则表达式是如何工作的。

正在重写:

 http://dittest/

至:

 http://dittest:8080/dit

如果 ^$ 应该匹配空字符串,为什么 ^$ 正则表达式可以测试 URL http://dittest/ 并重写为 http://dittest:8080/dit

这个问题不是重复的,因为它不是问正则表达式的含义 - 而是问为什么它在无法验证时使用它进行 IIS 中的入站规则 URL 重写 http://dittest/

我很感谢您的帮助。谢谢!

regex iis url-rewriting iis-7 url-routing
1个回答
0
投票

是的,是一篇旧帖子,但是......似乎没有真正的答案。 虽然@Adam-Mazzarella (https://stackoverflow.com/users/5169684/adam-mazzarella)确实顺便提到了答案。

关键是 IIS URL 重写仅使用输入 URL 的 PATH 部分进行匹配。 这是 URL 中主机:端口部分斜杠后面的部分,并且不包括主机:端口部分。

MS 文档:https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#accessing-url-parts-from-a-rewrite -规则

从此:

For an HTTP URL in this form: http(s)://<host>:<port>/<path>?<querystring>      
    - The <path> is matched against the pattern of the rule...

因此,从您的示例来看,输入是:“http://dittest:8080/”(或“http://dittest”应该导致相同的匹配):

  • 主机:端口 = http://dittest:8080/
  • 路径=[空]

...这将匹配,并重写 URL。

如果您输入的 URL 是“http://dittest:8080/some/thing”或“http://dittest/some/thing”:

  • 主机:端口 = http://dittest:8080/
  • 路径=某些/事物

...这不会匹配,因为 Path 不为空,因此不会重写 URL。

© www.soinside.com 2019 - 2024. All rights reserved.