URLRewriting挑战

时间:2009-09-29 17:44:40

标签: asp.net url url-rewriting

我正在使用URLRewritingNet 2.0。如何在ASP.NET中重写URL?

以下是请求:

  • 输入:www.sampleweb.com/param1/value1/param2/value2/default.aspx
  • 输出:www.sampleweb.com/default.aspx?param1=value1&param2=value2

它必须像param1/value1/param2/value2/ ... /paramN/valueN

一样动态工作

2 个答案:

答案 0 :(得分:0)

这不是传递键/值对的好方法。

您应该根据值位置假设键。这让生活变得更轻松。 HttpContext.RewritePath(及其变体)是你如何转换网址。

答案 1 :(得分:0)

所以...基本上你不能使用ASP.Net的URL重写器在web.config文件的“重写”节点中执行此操作。

但是你可以在你的代码中的其他地方(HTTP模块,或Begin Request,或其他)做到这一点。要转换URL,您可以执行以下操作:

  string strRegex= @"/([^/]*)/([^/]*)";
  RegexOptions myRegexOptions = RegexOptions.None;
  Regex myRegex = new Regex(strRegex, myRegexOptions);
  string strTargetString = @"/param1/value1/param2/value2/param3/value3/param4/value4";
  string strReplace = @"$1=$2&";

如果你将它与文件名匹配(这里是RE):

  (.*)/([^/]*\..*)$

然后重新编写完整的URL - 然后您可以使用Server.Execute或其他任何内容(如果在您自己的服务器上)或以其他方式代理到您希望处理的位置。是的,这有点难看,但是如果你无法控制你的请求形状,这就是改变它的方法。