asp.net URL重写实现动态页面静态化
作者:bea
URL重写实现动态页面静态化几乎在所有web语言中都存在,那么为什么要实现动态页面静态化呢?最大的益处无疑就是使我们的网站更加友好与搜索引擎。 使用ASP.NET实现URL重写需要有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。 一、MS组件实现URL重写 使用MS主键实现URL重写用法很简单,只需要把组件URLRewriter.dll拷到应用程序的b
URL重写实现动态页面静态化几乎在所有web语言中都存在,那么为什么要实现动态页面静态化呢?最大的益处无疑就是使我们的网站更加友好与搜索引擎。
使用ASP.NET实现URL重写需要有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。
一、MS组件实现URL重写
然后在system.web>system.web>中加入: httpHandlers> type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
使用ASP.NET实现URL重写需要有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。
一、MS组件实现URL重写
使用MS主键实现URL重写用法很简单,只需要把组件URLRewriter.dll拷到应用程序的bin目录下,然后在web.config下加入如下代码:
在中加入:
~/("d{4})/("d{2})/Default".aspx ~/Default.aspx?ID=$1然后在system.web>system.web>中加入: httpHandlers> type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
httpHandlers>
最后在地址栏上键入:http://localhost/Test/2004/12/News.aspx
效果出来了。
上面的~/("d{4})/("d{2})/News".aspx这句这正则表达式URL,即被重写的URL,而~/Default.aspx?ID=$1这一句为原始URL地址。其中的$1为第一个正则表达式值(上面例子为:2004),以此类推,第二个即为$2
二、使用Application_BeginRequest()实现URL重写
在应用程序中新建一个XML文件,文件内容为:文件名ReWriter.config
ReWriterUrls>
在Global.asax文件中的Application_BeginRequest(Object sender, EventArgs e)加入代码:
try { string path=Server.MapPath("~/ReWriter.config"); XPathDocument myXPathDocument = new XPathDocument(path); XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator(); XPathNodeIterator myXPathNodeIterator =myXPathNavigator.Select ("//rule"); System.Text.RegularExpressions.Regex oReg; string ReWriteUrl; while (myXPathNodeIterator.MoveNext()) { //oReg=new Regex(oNode.SelectSingleNode("url/text()").Value); XPathNavigator nav2 = myXPathNodeIterator.Current.Clone(); string oldString="",newString=""; XPathNodeIterator it2 = nav2.Select("old"); while(it2.MoveNext()) { oldString = it2.Current.Value; break; } it2 = nav2.Select("new"); while(it2.MoveNext()) { newString = it2.Current.Value; break; } if(oldString != "" &&newString != "") { oReg = new System.Text.RegularExpressions.Regex(oldString); if(oReg.IsMatch(Request.Url.ToString())) { ReWriteUrl = oReg.Replace(Request.Url.ToString(),newString); HttpContext.Current.RewritePath(ReWriteUrl); break; } } } } catch {}
有用 | 无用猜你喜欢
您可能感兴趣的文章:
- .NET教程WCF Helloworld入门教程
- 详细介绍C# richtextbox使用方法
- C#生成pdf文件实例代码
- C#学习之treeview组件的使用方法
- 使用C#中treeview控件方法介绍
- asp.net 2.0新增加特性详情
- ASP.NET MVC实例:建立第一个页面
- ASP.NET MVC实例:开发前准备
- 学习ASP.NET MVC模式后的感受
- 手把手教你C#操作XML文件(三)
- 手把手教你C#操作XML文件(二)
- 手把手教你C#操作XML文件(一)
- C#生成小容量高质量的缩略图
- 如何使用ASP.NET处理winform全局异常
- 如何使用ASP.NET创建线程
- 如何在VS 2010中调试.NET程序介绍
- C#如何在后台调用Javascript
- 优化ASP.NET性能需要注意的几点
- asp.net实现页面返回代码