IIS7 URL重写和符号

我正在使用它们的Rewrite模块从IIS6和ISAPI_Rewrite迁移到IIS7。 我有一个“漂亮”的url,如下所示:/ Shop / Q%26A。 当然,这是问答编码。 IIS7似乎不喜欢它。 有任何想法吗?

我已经设置了doubleEscaping = true,因为我使用“+”而不是“%20”作为空格。 我似乎无法find任何关于此的网上。

哇,在过去的两天里,IIS团队的Ruslan一直在帮助我解决一个几乎相同的问题。

IIS(HTTP.sys)会为你parsing你的URL – 例如http:// site /////// dir ////文件为你提供和http:// site / dir / file相同的内容。 它将单独留下查询string,但在这一点上,因为我们正在使用相当的URL,值还没有在查询string!

未编码的URL存储在名为UNENCODED_URL的服务器variables中 。 你可以做这样的事情来获得一个捕获variables的值:

<rule name="something" stopProcessing="true"> <match url=".*" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{URL}" negate="true" pattern="^/index\.php" ignoreCase="false" /> <add input="{QUERY_STRING}" pattern="^$" ignoreCase="false" /> <add input="{UNENCODED_URL}" pattern="/(.*)" /> </conditions> <action type="Rewrite" url="/index.php?title={C:1}" appendQueryString="true" /> </rule> 

然后通过对该条件的反向引用来映射它。