我正在使用URLRewritingNet 2.0。如何在ASP.NET中重写URL?
以下是请求:
www.sampleweb.com/param1/value1/param2/value2/default.aspx
www.sampleweb.com/default.aspx?param1=value1¶m2=value2
它必须像param1/value1/param2/value2/ ... /paramN/valueN
答案 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或其他任何内容(如果在您自己的服务器上)或以其他方式代理到您希望处理的位置。是的,这有点难看,但是如果你无法控制你的请求形状,这就是改变它的方法。