我一直在尝试使用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。