使用HttpHandler实现URL重写

转载 2007年09月13日 17:10:00
我们经常看到很多网站访问文章的时候才用的是***.html或***.shtml (如本blog的日志访问效果),其时这写文件在服务器上不存在的,那为什么会出现这样的效果呢,是因为Web服务器上对URL执行了重写,把访问的URL根据特定的格式重写成内部访问页面来实现的,它的好处是便于用户理解,同时搜索引擎也能更好地收入你的网站,当然其它的好处也很多,这里不做一一介绍了。

  本文所讲的是使用Asp.Net中的HttpHandler实现URL重写的,它所实现的原理请看这里,本程序可以处理任何Url,因为我在程序中使用了URL过虑,只有访问文件名是数字的才进行处理,并指在内部执行一个新的页面,并输出数据,代码如下:

      public void ProcessRequest(HttpContext Context)
        {
            try
            {
                //申明Request
                HttpRequest Request = Context.Request;
                //取来路Url的绝对路径
                string Url = Request.Url.AbsolutePath;
                //取访问的Web文件的开始字符间隔数
                int RegStart = Url.LastIndexOf("/") + 1;
                //申明一个确定Web文件名是否全是数字
                Regex Reg = new Regex(@"/d+");
                //用正则表达式进行匹配
                if (Reg.IsMatch(Url, RegStart))
                {
                    //如果web文件名是数字,则判定是查询相关文章,执行指定页面
                    Context.Server.Execute("~/PermaLink.aspx?id=" + Reg.Match(Url, RegStart).Value);
                }
            }
            catch
            {
                Context.Response.Redirect(Context.Request.Url.ToString());
            }
        }

  当然你首先要做的是先建一个类,并继承自IHttpHandler,然后把这段代码拷入,并编译。在Web项目中若要使用此功能,需要在web.config里面加上如下语句:

      <httpHandlers>
        <add verb="*" path="*.shtml" type="HttpHandle.UrlRewrite" />
      </httpHandlers>

       同时,还要在IIS中对Web项目进行配置,在Web项目的属性中,在主目录选项卡里,把执行权限改为"脚本和可执行文件",然后打开配置,在应用程序扩展里加上需重写的文件格式的扩展,好了,成事具备,只欠运行了。

 

使用Url Rewrite进行URL重写(实现网站伪静态)

http://blog.163.com/zhangmihuo_2007/blog/static/27011075201351433716225/ 有些项目需要隐藏请求地址的后缀,比如...
  • luofeixiongsix
  • luofeixiongsix
  • 2015年11月04日 16:52
  • 1356

会话跟踪技术介绍——cookie,url 重写, 隐藏表单域

由于HTTP协议是一种无状态的协议,也就是说当用户请求一个资源,服务器端根据请求做出响应,回发到客户端后,就关闭了连接(HTTP无状态协议详细请参考我的另外一篇文章)  通俗易懂客户端与服务器端交互...
  • qq_20545159
  • qq_20545159
  • 2015年10月29日 23:37
  • 1518

使用HttpHandler 来实现url路径伪静态

需要在web.config中配置 httpHandlers节点:
  • Joyhen
  • Joyhen
  • 2014年05月05日 17:31
  • 2080

flex使用filereference+httphandler实现文件上传/下载

在flex 的应用开发 中,同asp .net,jsp,php 等应用一样,都会有上传/下载文件 的 应用需求,flex的sdk也为我们提供了专门的类filerefudderence实现文件上传/下载...
  • dulgao
  • dulgao
  • 2013年09月18日 17:23
  • 1400

json格式数据取得2- 通过httphandler,从server侧取得 (jquery+ajax实现)

2011年2月27日 于新城科技园 上午说到如何通过ajax+jquery从client端取得json数据,当然那种做法一般的项目中是不会用到的。 下午整理了一下,通过httphandler,从s...
  • luyang1016
  • luyang1016
  • 2012年02月27日 17:25
  • 2703

ASP.NET利用HttpHandler实现多扩展名文件下载

以前写过这样一篇文章(ASP.NET文件下载函数(好用的东东)),发现很多朋友询问,并且有时候会发生错误,今天我再重新更新一下,利用IHttpHandler来实现多扩展名文件下载,思路是这样: ...
  • qbook
  • qbook
  • 2011年11月11日 16:47
  • 539

ASP.NET 防盗链的实现[HttpHandler]

有时我们需要防止其他网站直接引用我们系统中的图片,或下载文件链接。需要禁止盗链!在ASP.NET中可以方便的实现该功能! 做一个简单的盗链图片的示例,如下。新建立一个WebApplcation。新建...
  • fengsuifeng___
  • fengsuifeng___
  • 2015年09月01日 10:39
  • 196

.net SQL防注入,使用 HttpHandler

  • 2011年05月12日 15:24
  • 24KB
  • 下载

Asp.Net HttpHandler 实现验证码功能

利用HttpHandler可以实现很多功能,比如图片防盗、模块权限设置等,今天我们来介绍HttpHandler实现验证码功能 包含以下几个功能点: 1、初始化页面时生成验证码 2、客户端点击更换验...
  • taoerchun
  • taoerchun
  • 2015年06月08日 14:03
  • 341

ASP.NET路由系统实现原理:HttpHandler的动态映射

我们知道一个请求最终通过一个具体的HttpHandler进行处理,而我们熟悉的用于表示一个Web页面的Page对象就是一个HttpHandler,被用于处理基于某个.aspx文件的请求。我们可以通过H...
  • eqera
  • eqera
  • 2012年12月27日 10:22
  • 879
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用HttpHandler实现URL重写
举报原因:
原因补充:

(最多只允许输入30个字)