



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度.大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。那么接下来我们来看看如何配置他吧首先你要在你的项目里引用两个DLL:URLRewriter.dllActionlessForm.dll真正实现重写的是 URLRewriter.dll 但是如果你要实现分页,那么必须使用这个ActionlessForm.dllURLRewriter.dll1、下载文件下载地址1:/source/524514下载地址2:/UserFiles/URLRewriter.rar下载地址3:/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi下载地址4:本站下载2、配置WEB.CONFIG文件在项目中引用这个程序集,伪静态语法.(例把.aspx 的页面 用.html来表示,web.config文件中- 添加 以下节点/cn/ss_(.d*).html/cn/news.aspx?id=$1/cn/ss_(.d*)0(.w*).html/cn/ss_(.d*)0(.w*)0(.w*).html/dfsaddf/index(d*).html/Favorites_Page.aspx!-设置完以上步骤,就基本可以运行了,其中标签里面就是重写的一个模块,里面的是重写后的地址,而则是原地址。3、配置IIS解析.html文件配置IIS6.0IIS配置:网站-属性 -虚拟目录-配置(G).-映射-通配符应用程序映射-添加可执行文件:c:frameworkv2.0.50727 aspnet_isapi.dll扩展名为:.html确认文件是否存在:不选.配置IIS7.5你的网站-IIS中处理程序映射-添加脚本映射(路径:*.html 可执行文件%windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 名称:任意,比如Hml )添加通配符脚本映射(路径:* 可执行文件:C:WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll 名称:任意,比如All)托管处理程序映射(路径:* 可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)-Iis7 找不到System.Web.UI.PageHandlerFactory时,将应用程序池改成“经典”可以直接忽略这一步IIS中 模块-添加-(名称:任意 如All 类型:URLRewriter.ModuleRewriter 把 仅针对向 应用程序或托管处理程序发出请求调用 勾上 ok )-ok4、以上配置好之后就可以通过以下方式来访问了例如用户输入 hostname/d11.html,服务器会把他重写为http:/hostname/default.aspx?id=11。换句话说用户输入http:/hostname/d11.html,实际访问的是http: /hostname/default.aspx?id=11ActionlessForm.dllnamespaceActionlessFormpublicclassForm:System.Web.UI.HtmlControls.HtmlFormprotectedoverridevoidRenderAttributes(HtmlTextWriterwriter)writer.WriteAttribute(name,this.Name);base.Attributes.Remove(name);writer.WriteAttribute(method,this.Method);base.Attributes.Remove(method);this.Attributes.Render(writer);base.Attributes.Remove(action);if(base.ID!=null)writer.WriteAttribute(id,base.ClientID);创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要 使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容: 然后,将 (如果有)替换为: 并将右边的 标记替换为:成功!虚拟主机在网上看到,很多朋友在中做urlrewrite,用的是HttpHandleServer.Transfer的方法。其实这种方法是错误的。第一,HttpHandle是实现不了urlrewrite的;第二Server.Transfer是标准的重定向,根本不是urlrewrite。其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码就可以轻松实现。我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改iis,也没有权限去安装iis rewrite之类的iis插件。但是我们仍然可以轻松完成需要的功能。具体做法如下:打开global.asax.cs,定位到protected void Application_BeginRequest(Object sender, EventArgs e)。从方法名我想也能猜到它是做什么的。输入如下代码:protectedvoidApplication_BeginRequest(Objectsender,EventArgse)stringoldUrl=HttpContext.Current.Request.RawUrl;stringpattern=(.+)default/(d+).aspx(?.*)*$;stringreplace=$1default.aspx?id=$2;if(Regex.IsMatch(oldUrl,pattern,RegexOptions.IgnoreCase|RegexOptions.Compiled)stringnewUrl=Regex.Replace(oldUrl,pattern,replace,RegexOptions.Compiled|RegexOptions.IgnoreCase);this.Context.RewritePath(newUrl);有了上边这段代码,我访问一个类似:./default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:./default.aspx?id=123。当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论