URL中的百分号不符合重写规则(IIS上的ASP.NET MVC项目)

时间:2014-05-20 10:32:56

标签: asp.net-mvc iis rewrite

我有一个

形式的网址
/search/search-terms

在RewriteRules.config中描述,以匹配正则表达式

^search/(.*)$

该操作将其重写为

Search.aspx?value={R:1}

appendQueryString设置为true

一切都很好,直到我在搜索词中添加&符号(&)。我将“term1& term2”编码为URL字符串

/search/term1%26term2

但此网址仅匹配term1。我不确定是什么导致这种情况,是否存在URL中的百分号或错误的编码。我所知道的是Request["value"]仅返回term1,所以这不是我的逻辑问题,而是URL重写本身。

如何获取整个字符串,包括转义的&符号?然后我的逻辑正确解码转义的实体;我知道这是因为它在localhost中工作,没有重写。

1 个答案:

答案 0 :(得分:0)

事实证明,没有解决方案:百分号符合重写规则的匹配。我不得不对查询字符串进行编码和解码,用其他单词替换将URL -conconded转换为百分号符号的特殊字符(如空格到%20和&符号到%26)。