使用ASP.NET怎么对网页进行伪静态

  介绍

使用ASP.NET怎么对网页进行伪静态?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>方法一:利用Httphandler实现URL重写(伪URL及伪静态)

我们有时候会见到这样的地址:http://www.xxxx.com/show - 12 - 34. - html,你或许认为在站点服务器根目录“/毕麓嬖诿跋允? 12 - 34. - html”的文件,其实实际它可能是不存在的,而可能你看到的内容是“/aspx/show.aspx吗?类型=12,id=34”的内容,为什么要这样做呢?原因有多个方面:首先是增强URL的友好性,记“show-12-34。html”总比“/aspx/show.aspx ? type=12, id=34“好记吧?其次就是方便搜索引擎收录,很多搜索引擎更看好静态html页,比如:百度;其次就是出于安全性的考虑,因为这样隐藏了参数“类型”、“id”。是不是很有意思呢?

其实这是利用URL重写实现的,下面我就说一下在ASP.NET2.0下我所知道的最简单的实现方法:通过实现接口”IHttpHandler”来接管HTTP请求,跟我来!

<强> 1。在资源管理方案中添加一个类强,类的代码如下:

//类URLRewriter程序清单:,   系统;using    using  System.Data,   using  System.Configuration,   using 包含,   using  System.Web.Security,   using  System.Web.UI,   using  System.Web.UI.WebControls,   using  System.Web.UI.WebControls.WebParts,   using  System.Web.UI.HtmlControls,///,& lt; summary>,///,UrlRewriter  URL重写类,   ,///作者:yoyo ///,& lt;/summary>,   时间:public  class  UrlRewriter  IHttpHandler //实现“IHttpHandler”接口,   {,   ,public  UrlRewriter (),   {,//,//TODO:祝福;在此处添加构造函数逻辑,   ,//},   public  void  ProcessRequest (HttpContext 上下文),   {,   try    {,//取得原始URL屏蔽掉参数,   string  Url =时间Context.Request.RawUrl;大敌;;//建立正则表达式,   System.Text.RegularExpressions.Regex 才能;Reg =, new  System.Text.RegularExpressions.Regex    ,,(@"/显示- (\ d +) (\ d +) \ . . +“, System.Text.RegularExpressions.RegexOptions.IgnoreCase),,//用正则表达式进行匹配,   System.Text.RegularExpressions.Match  m =, Reg.Match (Url, Url.LastIndexOf(“/?);//从最后一个“/笨计ヅ?   if  (m.Success)//匹配成功,   {,   String  RealPath =, @" ~/aspx/show.aspx ?类型=?+,m.Groups[1], +,“和id=? +, m.Groups [2],,//Context.Response.Write (RealPath);,//Context.RewritePath (RealPath);//(RewritePath 用在无,Cookie 会话状态中),   Context.Server.Execute (RealPath);,   },   else ,   {,   Context.Response.Redirect (Context.Request.Url.ToString ()),   },   },   catch    {,   Context.Response.Redirect (Context.Request.Url.ToString ()),   },   },///,& lt; summary>,///,实现“IHttpHandler”接口所必须的成员,///,& lt;/summary>,///,& lt; value> & lt;/value>,///,作者:yoyo    public  bool  IsReusable    {,   {get  return 虚假,},   }   }

<强> 2。在web . config文件还要添加以下设置项

在& lt; system.web>节点下添加如下代码:

& lt; httpHandlers>,
& lt;添加动词=?”;路径=?/显示- ? * - ? * .aspx"类型=癠rlRewriter"/祝辞,
& lt;/httpHandlers>

解释一下:

动词是指允许的动作“得到”、“后”,“把”中的一种或几种,星号“*”表示全部允许;

路径是指匹配路径,支持简单的通配符;

类型是指绑定的类名以及包括命名空间(如果有的话),

对了,首先你要建立一个WEB窗体“show.aspx”在目录“aspx”下,因为这个文件就是实际接受请求并显示相关内容的页面。

OK !,编译,打开网站输入地址http://localhost: 80/show-12-34。aspx访问一下,检查看是不是显示的“/aspx/show.aspx ? type=12, id=34”的内容呢? !

上面我是设置了匹配aspx文件,因为IIS里. HTML扩展名默认是不归ASP.NET接管的,如果要接管HTML请求,
请将IIS的扩展名. HTML映射到“C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi . dll”,
然后将上面的aspx改成HTML:

& lt; httpHandlers>,
& lt;添加动词=?”;路径=?/显示- ? * - ? * .html"类型=癠rlRewriter"/祝辞,
& lt;/httpHandlers>

现在打开网站输入地址http://localhost: 80/show-12-34。html访问一下~ !

<强>方法二:地址重写,使用伪静态,页面回发处理

制作网站页面的时候,有时候为了用户的体验和搜索引擎的收录,很多网站经常使用伪静态地址重写,或者称为URL地址重写的办法,来将诸如:MyEbook.aspx ? ID=1, MyEbook.aspx ? ID=2 MyEbook.aspx ?ID=3等带有参数的动态页面伪装成为一个静态页面,比如,将以上的伪装成为My1.html, My2.html My3。html等等诸如此类!

使用ASP.NET怎么对网页进行伪静态