2010-10-27 40 views
1

我使用IIS7 URL重写与我的网站写在ASP.NET中。我不确定在重写的URL中处理/的最佳方式,因为目前当出现一个时,它会打破参数,因为引擎认为它需要将它拆分到错误的地方。例如,像这样的网址:处理/在IIS中URL重写

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

将被错误地分割。 “测试人员”将成为代码和“标题”的标题。有什么办法可以防止这种情况发生,或者是因为引擎在其上分割了URL,因此您无法使用/

谢谢。

回答

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}} 

当你处理不同的网址成分,如单路部分或参数值(这是绝大多数的时间),你会想URLEncode;海事组织这是一个非常有问题的设计,这不会发生(a)默认或(b)在添加规则向导生成的规则中。

+0

我把它放在web.config文件中,所有的重写都完成了吗? – webnoob 2010-10-27 12:11:24

+0

是的,或者您可以通过IIS管理器界面来完成。如果你使用配置XML,你当然需要将'&'s转义为'&'。 – bobince 2010-10-27 14:41:16

+0

非常感谢您的帮助。 – webnoob 2010-10-28 14:01:50

0

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

不知道这是否是最好的解决方案,但它适合我的使用。