如何阻止UrlRewriter剥离我的+符号

时间:2008-10-20 14:04:41

标签: c# asp.net regex urlrewriter

我在我的应用程序中使用了Intelligencia的UrlRewriter,我遇到的问题是我设置的规则似乎是从我的网址中删除了+符号。

例如,我希望网址为/category/catname/+tag+tag但在我看来是/category/catname/ tag tag

有没有人有任何想法,这是否属于我的正则表达式?我已经在监管机构中尝试了它并且匹配得很好。

<rewriter>
  <rewrite url="^/content/(.+)$" to="~/page.aspx?name=$1" />
  <rewrite url="^/category/(.+)$" to="~/catalog.aspx?category=$1" />
  <rewrite url="^/product/(.+)$" to="~/catalog.aspx?product=$1" />
  <rewrite url="~/login/" to="~/login.aspx"/>
</rewriter>

1 个答案:

答案 0 :(得分:5)

之所以这样做,是因为在你的改写者真正得到它之前,“+”被网络服务器解析为一个空格。 litteral +是您无法在实际URL中使用的东西。如果你想使用+那么你需要引用它像%2B:“/ category / catname /%2Btag1%2Btag2”。

编辑:Here is an example of URL encoding这说明了一些您​​无法使用的字符,以及如何编码它们。如果您正在为URL寻找更具视觉吸引力的字符,您可以尝试“ - ”和“_”这些都是有效的,我建议使用“ - ”。然后,url的一个示例是“/ category / catname / -tag1-tag2”。