大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。 结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。那么接下来我们来看看如何配置他吧 首先、我们要用到URL重写组件:URLRewriter.rar 其次、需要在WEB.CONFIG里面进行些设置: 1、在Web.Config的<system.web>和</system.web>添加以下节点: 2、在Web.Config的<configuration>和</configuration>添加以下节点: 设置完以上两个步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。 ? 3、配置IIS解析.html文件 确认文件是否存在:不选. 4、以上配置好之后就可以通过以下方式来访问了 例如用户输入 hostname/d11.html,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http://hostname/d11.html,实际访问的是http://hostname/default.aspx?id=11 ? ? 5、分页必须引用以下方法 ActionlessForm.dll 创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要 使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容: <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 然后,将 <form runat="server">(如果有)替换为: <skm:Form id="Form1" method="post" runat="server"> 并将右边的 </form> 标记替换为: </skm:Form> ? ? 在网上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法。其实这种方法是错误的。 第一,HttpHandle是实现不了urlrewrite的; 第二Server.Transfer是标准的重定向,根本不是urlrewrite。 其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码就可以轻松实现。我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改iis,也没有权限去安装iis rewrite之类的iis插件。但是我们仍然可以轻松完成需要的功能。具体做法如下:打开global.asax.cs,定位到protected void Application_BeginRequest(Object sender, EventArgs e)。从方法名我想也能猜到它是做什么的。输入如下代码: ? 有了上边这段代码,我访问一个类似:.../default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:.../default.aspx?id=123。 当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在iis中注册一下,就可以实现任意后缀名的处理。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到,.net就可以帮你实现,并且这一切不需要多少的代码。
IIS配置:网站->属性->虚拟目录->配置(G)...->映射->通配符应用程序映射->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名为:.html
{
????public?class?Form?:?System.Web.UI.HtmlControls.HtmlForm
????{
????????protected?override?void?RenderAttributes(HtmlTextWriter?writer)
????????{
????????????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);
????????}
????}
}
{
string?oldUrl?=?HttpContext.Current.Request.RawUrl?;
string?pattern?=?@"^(.+)default/(\d+)\.aspx(\?.*)*$";
string?replace?=?"$1default.aspx?id=$2";?if(Regex.IsMatch(oldUrl,?pattern,?RegexOptions.IgnoreCase?|?RegexOptions.Compiled))
{
string?newUrl?=?Regex.Replace(oldUrl,?pattern,?replace,?RegexOptions.Compiled?|?RegexOptions.IgnoreCase);?
this.Context.RewritePath(newUrl);?
}?
}
详细解决方案
利用URLRewriter.dll 兑现ASP.NET实现伪静态
热度:141 发布时间:2012-11-06 14:07:00.0
namespace?ActionlessForm
成功!
protected?void?Application_BeginRequest(Object?sender,?EventArgs?e)
相关解决方案
- ASP.Net上用 URLRewriter 进行重写不起作用
- ASP.NET url伪静态 URLRewriter.dll,该怎么解决
- 未能加载类型"URLRewriter"解决思路
- 使用Intelligencia.UrlRewriter.dll重写路径后,CSS和图片的路径都不对了,请大家帮忙,先谢过!解决办法
- URLRewriter.dll伪静态有关问题
- 用Intelligencia.UrlRewriter.dll实现url重写在iis下没有用解决思路
- 未能加载文件或程序集“URLRewriter, Version=1.0.1495.18710, Culture=neutral, PublicKeyToken=,该怎么处理
- 引用"Mircosoft URLRewriter.dll"找不到,该怎么解决
- urlrewriter 服务器上404异常
- Asp.net Url 重写成功(使用Intelligencia.UrlRewriter),但Google不收录重定向后的页面,请大家帮忙解决方法
- 要实现伪静态,必须要在IIS上安装 UrlRewriter.dll 组件吗?解决方法
- urlrewriter 后css文件找不到了解决方法
- urlrewriter 有关问题
- urlrewriter 和 Struts2 整合 访问.html 不是访问对应的action帮忙看看是哪里配置异常
- 未能加载文件或程序集“Intelligencia.UrlRewriter”或它的某一个依赖项。系统找不到指定的文件。解决方法
- 未能加载资料或程序集“Intelligencia.UrlRewriter”或它的某一个依赖项。系统找不到指定的文件
- 使用 URLRewriter 重写 asp.net 网址 经验
- URL重写,asp.net URL重写,URLRewriter.dll下载(项目内做转向)