IIS URL重写对HTTP和HTTPS的行为有所不同

时间:2017-11-21 16:59:23

标签: iis url-rewriting iis-10

我一直在尝试使用URL Rewrite模块创建一个规则,该规则在URL(超过第一个集合)中查找任意一组两个或多个正斜杠,这些正斜率将浏览器重定向到包含所有集合的URL多个正斜杠替换为一个。例如:

http://myhost.com/abc//def//ghi//jkl//iisstart.png

应该重定向到

http://myhost.com/abc/def/ghi/jkl/iisstart.png

我已经明白IIS认为这两个URL功能相同,但对于这个面向公众的站点,我们希望避免抓取工具使用多个正斜杠索引URL的可能性。因此重定向。所以这是我放在一起的规则:

<rule name="Redirect URLs with Multiple Forward Slashes" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
   <match url=".*" />
   <action type="Redirect" url="{URL}" appendQueryString="true" />
   <conditions logicalGrouping="MatchAny">
      <add input="{UNENCODED_URL}" pattern="//" />
   </conditions>
</rule>

我在我的本地方框上测试了它,它产生了预期的结果(重定向)。我将它复制到开发服务器上的web.config并尝试了,但它没有用。我甚至采取了确保URL Rewrite安装与开发服务器上的版本匹配的路径(它是2.0,并且在我们的大型生产服务器场中升级将是一个痛苦,所以我想避免这种情况)。在那之后,我考虑到我们的开发服务器在设计上只提供HTTPS,而我在本地盒子上用HTTP进行测试。当我在本地框上启用HTTPS时,重写规则不适用于HTTPS URL,但可以使用指向同一资源的HTTP URL正常工作。

我看过的所有URL Rewrite文档都引用了HTTP,并且没有对HTTPS的引用。我在这里做错了什么?

对于记录 - 我的本地方框运行的是Windows 10,并且具有IIS版本10.开发服务器正在运行Server 2012,并且具有IIS版本7.5。

0 个答案:

没有答案