zoukankan      html  css  js  c++  java
  • ASP.NET HttpModule URL 重写 (一) 【Z】

    大家好,又来和大家见面了,此次给大家带来的URL重写,关于URL重写是什么,有什么好处,如何重写,今天我和大家一起分享一下我的经验

    一、URL重写

            URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”。

    二、URL重写优点

              1、有利于百度、谷歌等搜索引擎收录于抓取,如果你是网站优化高手的化,这就是基本功了。。。

              2、更具有可读性,伪装你的技术实现,让别人想攻击你都要有一定的难度!!!

    三、如何URL重写

             1、ASP.NET实现一共有两种

                       a.利用HttpModule处理request请求中的URL

                       b.利用插件IIS Rewrite 组件实现URL重写

              2、HttpModule实现URL重写

                    a.手写看一下HttpModule,下图清楚的描述了HttpModule在整个页面请求过程中处于的低位,HttpModule是动态请求必经之路啊。

      c.案例剖析,让你深入体会奥妙之处

                  第一步:修改如下代码

                   场景:有这样两个页面,数据列表页和数据详细页面,点击列表页数据进入详细页面,我们要做数据列表页面的连接做如下修改

                   修改前:<asp:HyperLink ID="hkTitle" runat="server"
                         NavigateUrl='<%# Eval("Id","BookDetail.aspx?id={0}") %>'>数据标题</asp:HyperLink>

                   修改后:<asp:HyperLink ID="hkTitle" runat="server"
                         NavigateUrl='<%# Eval("Id","BookDetail_{0}.html") %>'>数据标题</asp:HyperLink>

                   第二步:创建HttpModule,代码如下

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    ///DemoModule 的摘要说明
    /// </summary>
    public class DemoModule:IHttpModule
    {
        /// <summary>
        /// 开始处理请求事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void context_BeginRequest(object sender,EventArgs args)
        {
            //获取HttpApplication
            HttpApplication application = sender as HttpApplication;
            //获取用户请求的URL
            string oldUrl = application.Request.RawUrl;
            //如果请求中存在“BookDetail”字符进行处理请求
            if (oldUrl.IndexOf("BookDetail") > 0)
            {
                //截取BookDetail之前位置的字符串
                string newUrl = oldUrl.Substring(0, oldUrl.IndexOf("BookDetail"));
                //请求的新字符串为"BookDetail.aspx?bid=XXXXXXXX"
                newUrl = newUrl + "BookDetail.aspx?bid=" + oldUrl.Substring(oldUrl.LastIndexOf("_") + 1,
                    (oldUrl.IndexOf(".") - oldUrl.LastIndexOf("_") - 1));
                //将请求中的URL进行重写
                application.Context.RewritePath(newUrl);
            }
           
           
        }
    
    
        public void Dispose()
        {
            throw new NotImplementedException();
        }
    
        /// <summary>
        /// 初始化事件
        /// </summary>
        /// <param name="context"></param>
        public void Init(HttpApplication context)
        {
            //关联请求开始事件
            context.BeginRequest +=new EventHandler(context_BeginRequest);
        }
    
    }

    第三步:配置HttpModule,在web.config中如下配置

    <system.web>        
          <httpModules>
                <add name="DemoModule" type="DemoModule"/>
            </httpModules>
    </system.web>

      第四步:体验效果吧 今天就说到这里吧,还有一个URL重写的方法,有时间完成,大家赶快体验一下吧!!!

    原文:http://blog.csdn.net/songyuhongnannan/article/details/7493499

  • 相关阅读:
    Flume案例
    推荐算法
    Hive安装
    打开相机
    打电话,发短信
    温度传感器,摇一摇
    经度,纬度,获取
    团队站立会议01
    团队项目计划会议
    "群英队"电梯演讲
  • 原文地址:https://www.cnblogs.com/maijin/p/4555739.html
Copyright © 2011-2022 走看看