为什么在.NET代码获取之前,IIS7会从url中去掉一个括号内的模式

我问这个问题,因为谷歌search显示重复页面(示例):

/(S(2kflgaiqzadp5su35ljgorsd))/widgets/large/blue /widgets/large/blue 

我不知道谷歌如何得到第一个url。 这不是目前的担忧。 事实certificate,以下url也是有效的,并会显示相同的页面内容:

 /(S(2))/widgets/large/blue /(S())/widgets/large/blue //nothing inside second parenth. /(V(2))/widgets/large/blue //different uppercase letter /widgets/(V(2))/large/blue //different segment position ... /widgets/large/(V(2))/blue /widgets/large/(Z(2))/blue //it seems any uppercase letter will do 

因此,这些是无效的(给404):

 /(s(2))/widgets/large/blue //lowercase first letter /(S)/widgets/large/blue //no secondary parentheses /(4())/widgets/large/blue //starts with number 

HttpContext.Request对象(C#)中的URL不显示任何types(例如RawUrl,AbsoluteUrl等)中的括号url段。 请求的forms为: / widgets / large / blue在上面的所有接受的url上。

我们的本地IIS服务器上没有任何重写规则。 生产服务器显示与上述相同的结果,但有几个重写规则(典型值)。

我有两个模块安装(一个用于重写,一个用于image processing)。 我删除了他们,并得到相同的结果。 另外,这不是新引入的问题。 我已经注意到了多年,并通过许多代码的变化。 它必须在IIS的一面。