IIS 重写规则检查查询字符串,如果不存在则添加它

IIS 重写规则检查查询字符串,如果不存在则添加它

我正在尝试制定一个 IIS URL 重写规则,将 URL 参数附加到 URL。url 参数是hssc。因此,任何通过服务器处理的 URL 都需要该参数。请记住,有些 URL 已经有自己的参数,而其他 URL 没有,还有根 URL 等,有时需要添加?hssc=1&hssc=- 因此,如果我有一个这样的 URL:

我还希望 URL 不会被隐藏(就像后台重写一样)。我需要 URL 显示在 URL 中,这样当用户复制 URL 或将其加入书签时,参数就在那里。

我已经设置了匹配条件\&hssc|\?hssc- 现在我只需要一种方法来编写 URL,这样它就会出现并保留原始 URL 中已经存在的部分。

答案1

这应该可以解决问题:

<rule name="Add hssc param" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{QUERY_STRING}" pattern="hssc=1" negate="true" />
    <add input="&amp;{QUERY_STRING}" pattern="^(&amp;.+)|^&amp;$" />
  </conditions>
  <action type="Redirect" url="http://{HTTP_HOST}/{R:0}?hssc=1{C:1}" appendQueryString="false"  />
</rule>

这将始终将 hssc=1 添加到查询字符串的开头,同时保留查询字符串的其余部分。它适用于您的所有示例。我将其添加到前面而不是附加,但我认为最终结果是相同的。

相关内容