global.asax中的ASP.NET动态URL REWRITING

时间:2012-10-07 11:41:46

标签: asp.net url-rewriting

我需要使用global.asax中的正则表达式在一行中为此解决方案实现asp.net url重写

www.dummydomain.com/a/1/b/2/c/3/d/4/...                    
www.dummydomain.com/b/2/c/3
www.dummydomain.com/b/2/a/1/c/3/

这意味着更改参数序列不应该影响+不同参数的数量将是动态的+我可以按名称访问这些参数值,例如a,b,c

2 个答案:

答案 0 :(得分:1)

您可以通过web.config配置URL重写规则,也可以编程方式配置。

请看以下MSDN文章,它深入解释

http://msdn.microsoft.com/en-us/library/ms972974.aspx

简而言之,重写URL以编程方式从global.asax.cs中的Application_BeginRequest()调用HttpContext.RewritePath(字符串路径)

答案 1 :(得分:0)

您可以对字符串使用split选项,然后将值放入字典中。这假设您的模式永远不会中断。

Dim MyContext = HttpContext.Current
Dim url = Request.Path.ToLower()
url = url.Trim("/")
Dim Vals = url.Split("/")
Dim Dict As New Dictionary(Of String, String)
for i = 0 to (vals.count/2)-1
     Dict.Add(vals(i),vals(i+1))
next

然后,您可以使用字典对象来定位变量。

在Application_BeginRequest方法的global.asax文件中运行此命令,并调用MyContext.RewritePath将用户发送到正确的路径。

if dict("a") = 1 then MyContext.RewritePath("new URL")