2010-06-30 85 views
1

我们有一些需要重定向的传入网址,但我们在包含加号(+)的网址时遇到问题。如何重写包含加号和特殊字符的url?

例如任何输入URL必须重定向到新网站的主页:

/eng/news/2005+01+01.htm

应该被重定向到到新网站的主页

/EN/

使用UrlRewriter.net我们已经建立了与“正常”的URL工作,但对于上述

<redirect url="~/eng/(.+)" to="/en/index.aspx" /> 

不过,如果我输入网址更改为

工作正常不工作的规则/ch/news/2005-01-01.htm

什么问题,任何人都可以帮忙?

+0

为什么在开始时会出现'〜'? – 2010-06-30 11:17:19

回答

0

我不知道UrlRewriter.net,我不确定它使用哪种正则表达式语法。我给出了一些基于Perl正则表达式的提示。

  1. 什么是~开头?也许你的意思是^,即字符串的开始。
  2. (.+)匹配重复一次或多次的任何字符;

    ^\/eng\/.*\+.*

    我:这是你想

这是写一个(Perl的)正则表达式匹配开始以字符串/eng/ URL和方含一个+标志的一种方式不符合+标志希望这可以帮助。

+1

UrlRewriter.net使用.NET正则表达式语法 - 其中'。* *'包含'+'字符 - 就像我经历过的每一种正则表达式风格。 – 2010-06-30 12:57:36

+0

另外,即使点以某种方式不包含加号,当他有多个'+'字符时(例如),使用'。* \ +。*'也不会起作用。像'[^ \ n] *''会更简单 – 2010-06-30 12:59:37

+0

@Peter Boughton:你为什么说它不起作用?我认为它确实如果我做'perl -pi -e'if(/^\/eng\/.*\+.*/){print“yes \ n”; } else {print“no \ n”; }'',我给'/ eng/news/2005 + 01 + 01.htm'作为输入,我得到'yes'作为输出。 – MarcoS 2010-06-30 13:10:24