IIS / ARR是否每行重写一个URL?

时间:2015-03-18 03:57:37

标签: iis url-rewriting arr

我最近发现,如果网页的一行中有多个URL(有资格重写),IIS / ARR只会重写该行的第一个匹配,而忽略其余的。所以我想问两个问题:

  1. 这是IIS / ARR URL重写功能的默认行为吗?
  2. 是否有解决此问题的方法,以便IIS / ARR可以在同一行上识别并重写多个网址?

2 个答案:

答案 0 :(得分:1)

我的解决方案是确保Regex不会匹配引号之外的任何内容,即阻止它变得贪婪。

使用GUI,匹配模式以([^"]*)而不是(.*)结束,当保存在Web.config中时,它会转义为([^"]*)

我的Web.config中的行如下所示:

<match filterByTags="None" pattern="http://your.domain/~/media([^&quot;]*)" />

答案 1 :(得分:0)

因此,我认为可以安全地假设您指的是在HTML响应中更改URL的出站重写规则。

  1. 不,这不是重写模块的默认行为。
  2. 更新您的问题以包含您的规则配置,以便我们提供帮助。
  3. 有用的信息:

    如果您未指定<match>,则在filterByTags元素中,匹配模式将应用于整个回复内容,无论行和出现次数如何。请注意,对整个响应内容的正则表达式模式的评估是CPU密集型操作,可能会影响Web应用程序的性能。

    听起来你的规则没有正确配置。

    更多信息: