`
raisun_1988
  • 浏览: 113837 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

虚拟主机上用Asp.net实现Urlrewrite

    博客分类:
  • .Net
阅读更多

 

 【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上购物社区! - Powered by Discuz!
http://www.itpob.cn/

 

在网上看到,很多朋友在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)。从方法名我想也能猜到它是做什么的。输入如下代码:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   string oldUrl = HttpContext.Current.Request.RawUrl ;

   string pattern = @"^(.+)default/(\d+)\.aspx(\?.*)*___FCKpd___0quot;;
   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);
   }
}

有了上边这段代码,我访问一个类似:.../default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:.../default.aspx?id=123。

当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,

这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在IIS中注册一下,就可以实现任意后缀名的处理。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb 时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到.net就可以帮你实现,并且这一切不需要多少的代码。

分享到:
评论

相关推荐

    Asp.Net URL重写-URLReWrite

    Asp.Net的URLReWrite的源代码含详细具体的配置方法,在info.doc里。

    在ASP.NET中UrlRewrite的实现(仔细看哦,能隐藏扩展名)之五

    在ASP.NET中UrlRewrite的实现(仔细看哦,能隐藏扩展名)之五

    利用UrlRewrite,asp.net动态生成htm页面

    利用UrlRewrite,asp.net动态生成htm页面

    ASP.NET的UrlRewrite URL重写伪静态实例

    大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站...

    在ASP.net中实现基于UrlRewrite的防盗链

    在ASP.net中实现基于UrlRewrite的防盗链

    ASP.NET中URL Rewrite的具体实现方法

    您已经知道的,您还不知道的,别处已经讲过的,或者还没有讲过的,希望这系列文章的“旧事重提”不会让您觉得沉闷,并且能让您了解ASP.NET中URL Rewrite的方方面面。如果您以后再遇到URL Rewrite方面的问题是能够...

    .net URLRewrite

    URLRewrite动态库,项目中引用,配置webconfig,实现伪静态效果

    asp.net url重写 demo

    asp.net url重写 demo 框架 3.5 利用Intelligencia.UrlRewriter.dll组件实现url重写

    利用UrlRewrite,asp.net动态生成htm页面 下载

    利用UrlRewrite,asp.net动态生成htm页面 ~~~~~~~~~~~~~~

    netcn_URLRewrite

    3 最重要的 在象Google Yahoo 和 Live 这样的搜索引擎中提高你网站上网页的搜索相关性 具体来说 URL重写经常能使你在你网站上">什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站...

    ASP.NET中实现二级或多级域名

    ASP.NET中实现二级或多级域名ASP.NET中实现二级或多级域名(修改UrlRewrite) 大家应该知道,微软的URLRewrite能够对URL进行重写,但是也只能对域名之后的部分进行重写,而不能对域名进行重写,如:可将 ...

    asp.net 站点URLRewrite使用小记

    IIS收到请求–>ISAPI用于处理该请求–>BeginRequest开始–>EndRequest结束–>输出Response 中间有好多其它的流程就不标记了,这里只是列出URLRewrite所走的流程。 其实就是在BeginRequest事件中调用HttpContext的...

    ASP.NET中Global和URLReWrite用法

    主要介绍了ASP.NET中Global和URLReWrite用法,较为深入浅出的分析了Global.asax的功能及配置技巧,并实例分析了URLReWrite实现伪静态的方法,需要的朋友可以参考下

    urlrewrite.dll

    urlrewrite,实现伪静态页面,UrlRewrite技术隐藏实现细节,这样修改移植都很方便,而且完全不损失pagerank

    asp.net2.0URL重写

    UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm解决原始地址form回传的问题

    ASP.NET 中执行 URL 重写实例教程

    ASP.NET 中执行 URL 重写实例教程

    VC编写的URL Rewrite dll,支持 asp和asp.net

    与使用正则表达式的ISAPI Filter(简称IF)Rewrite产品不同,本IF用简单配置实现虚拟URL与实际处理的Web程序映射,优劣自鉴。以下为配置示例: [bbsfiles] ext = /bbsfiles/[*] mapto = /printinfo1.asp [aspx] ext=/...

    ASP.net中实现基于UrlRewrite的防盗链功能

    在ASP.net中最快实现UrlRewrite的方法这篇文章中说了如何做UrlRewrite,那只是一个最简单的应用 其实利用UrlRewrite与IIS的设置我们可以实现简单而有效的防盗链功能。 假设你的站点有一个文件:web.rar,你希望只有...

Global site tag (gtag.js) - Google Analytics