2010-04-07 61 views
3

是否可以使用正则表达式来解析查询字符串并构建一个可以转换回丑陋URL以便在遗留应用程序上使用的好URL?例如,假设我们不确定哪些查询字符串参数将成为URL的一部分。这里有一个例子:ISAPI重写(在IIS和ASP.NET上使用Helicon)和动态查询字符串append?

http://www.domain.com/thePage.aspx?Param1=1&Param2=23&Param7=22 

我们要重写URL作为

http://www.domain.com/Param1/1/Param2/23/Param7/22 

在我们需要的过滤器,以允许应用程序把它看成是旧的URL才能正确处理同时进行。再一次,我们不知道可以使用什么样的参数组合。

这只能使用过滤器来完成吗?

回答

0

由于official forums said,您可以在Helicon 3.0中使用RewriteCompatibility2 on,因此您可以使用LP指令(循环替换)。

我用这个正则表达式来解析查询字符串(它使两组:name所有参数名称,并value所有参数值)

[\?&](?<name>[^&=]+)=(?<value>[^&=]+) 

基于提到的论坛主题,我想你应该尝试像这个:

//for replacing '=' 
RewriteRule ^[\?&]([^&=]+)=([^&=]+)$ $1/$2 [LP,R=301,L] 
//for replacing '&' 
RewriteRule ^\?([^&]+)&([^&]+)$ $1/$2 [LP,R=301,L]