我在我的网站上使用IIS7 URL重写,这是用ASP.NET编写的。我不确定在重写的URL中处理/
的最佳方法,因为当前,当一个存在时,它会破坏参数,因为引擎认为它需要将它拆分到错误的位置。例如,网址如:
www.test.com/myscript.aspx?code=dothis&title=tester/title
将被错误地拆分。 “测试者”将成为代码和“标题”的标题。有什么方法可以阻止这种情况,或者只是你不能使用/
因为引擎会在它们上面拆分URL吗?
感谢。
答案 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中使用它们之前替换所有正斜杠来解决这个问题。然后我在需要时重新输入正斜杠。
不确定这是否是最佳解决方案,但它适合我的使用。