处理/在IIS URL中重写

时间:2010-10-27 10:07:10

标签: asp.net regex iis-7 url-rewriting

我在我的网站上使用IIS7 URL重写,这是用ASP.NET编写的。我不确定在重写的URL中处理/的最佳方法,因为当前,当一个存在时,它会破坏参数,因为引擎认为它需要将它拆分到错误的位置。例如,网址如:

www.test.com/myscript.aspx?code=dothis&title=tester/title

将被错误地拆分。 “测试者”将成为代码和“标题”的标题。有什么方法可以阻止这种情况,或者只是你不能使用/因为引擎会在它们上面拆分URL吗?

感谢。

2 个答案:

答案 0 :(得分:2)

URLEncode函数可用于重新编码反向引用。例如:

^/myscript/([^/]+)/([^/]+)$                                    -> rewrite ->
/myscript.aspx?code={UrlEncode:{R:1}}&title={UrlEncode:{R:2}}

^/myscript.aspx?code=([^&]+)&title=([^&]+)$                    -> redirect ->
/myscript/{UrlEncode:{R:1}}/{UrlEncode:{R:2}}

当您处理单独的URL组件时,例如单个路径部分或参数值(绝大多数时候都是这样),您需要URLEncode; IMO这是一个非常值得怀疑的设计,这不会发生(a)默认情况下或(b)在Add Rule向导生成的规则中。

答案 1 :(得分:0)

我通过在URL中使用它们之前替换所有正斜杠来解决这个问题。然后我在需要时重新输入正斜杠。

不确定这是否是最佳解决方案,但它适合我的使用。