博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
url重写
阅读量:5987 次
发布时间:2019-06-20

本文共 3021 字,大约阅读时间需要 10 分钟。

一. 为了页面更有利于seo优化,url重写程序需要做出的不可缺少的手段之一。

二.目前url重写最常见的两种方法有:

1.通过熟悉页面的内部执行流程,也就是asp.net请求管道中的相关知识点,进行url重写。

2.通过使用微软提供的UrlRewriter.dll实现url重写(简单);

三、在请求管道中的第一个请求管道中拦截url并使其完成url重写功能:

1.熟悉请求管道实现程序运行的全过程:

(1):BeginRequest: 开始处理请求

(2):AuthenticateRequest授权验证请求,获取用户授权信息
(3):PostAuthenticateRequest获取成功
(4): AunthorizeRequest 授权,一般来检查用户是否获得权限
(5):PostAuthorizeRequest:获得授权
(6):ResolveRequestCache:获取页面缓存结果
(7):PostResolveRequestCache 已获取缓存
(8):PostMapRequestHandler 创建页面对象
(9):AcquireRequestState 获取Session-----先判断当前页面对象是否实现了IRequiresSessionState接口,如果实现了,则从浏览器发来的请求报文体中获得SessionID,并到服务器的Session池中获得对应的Session对象,最后赋值给HttpContext的Session属性
(10)PostAcquireRequestState 获得Session
(11)PreRequestHandlerExecute:准备执行页面对象
执行页面对象的ProcessRequest方法
(12)PostRequestHandlerExecute 执行完页面对象了
(13)ReleaseRequestState 释放请求状态
(14)PostReleaseRequestState 已释放请求状态
(15)UpdateRequestCache 更新缓存
(16)PostUpdateRequestCache 已更新缓存
(17)LogRequest 日志记录
(18)PostLogRequest 已完成日志
(19)EndRequest 完成、

2.直接上代码:



网站结构图:



using System;using System.Collections.Generic;using System.Web;using System.Text;using System.Text.RegularExpressions;namespace UrlReWriter{    class UrlWriter:IHttpModule    {        #region IHttpModule 成员             public void Init(HttpApplication context)        {           context.BeginRequest+=new EventHandler(context_BeginRequest);        }        void context_BeginRequest(object sender, EventArgs e)        {            //获得当前页面请求管道的HttpApplication对象            HttpApplication application = sender as HttpApplication;            HttpContext context = application.Context;//获得上下文对象            string url = context.Request.Url.LocalPath;//获得URL(不包含域名和路径)            Regex reg1 = new Regex("/WebForm2/[A-Z0-9a-z_]+");//注意文件夹与文件名称的大小写. if (reg1.IsMatch(url)) //这种情况是匹配根据ID值来查看某个文章的内容。            {                string strUserName = url.Substring(url.LastIndexOf('/')+1);                context.RewritePath("/WebForm2.aspx?id=" + strUserName); //前台的列表页就可以这样写:            }            else if (url.Contains("/admin"))   //如果url中包含"/admin"字样则转向,实现用户验证,哈哈,不过这里是错的,应为这个请求管道中还获取不到session值呢,这个验证最好在第九个请求管道(AcquireRequestState )中完成。            {                context.RewritePath("/Error.aspx");             }        }        public void Dispose()        {                    }        #endregion    }}


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="url重写.WebForm1" %>        


using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace url重写{    public partial class WebForm2 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            Response.Write(Request.QueryString["id"]);           //在转到的页面输出传过来的参数        }    }}




note:记得在url重写项目中引用UrlReWriter项目。否则httpModules接口没有注册,url重写泡汤是必然的。呵呵



四、第二种重写方式,是微软提供的bll,很容易实现的,大家可以在网上查一下资料,很简单的我就不写了,如果不会也可以跟我留言,咱们再一起沟通的。。呵呵,886。。。

 

转自:

转载地址:http://yiulx.baihongyu.com/

你可能感兴趣的文章
【实战HTML5与CSS3】用HTML5和CSS3制作页面(上)
查看>>
Android : 如何在WebView显示的页面中查找内容
查看>>
数字信号处理 基础知识 对比回顾
查看>>
分享个人Vim型材
查看>>
配置算法(第4版)的Java编译环境
查看>>
本学习笔记TCP/IP传输协议
查看>>
荣耀10GT升级EMUI 9.0体验分享:这可能是最好用的手机操作系统
查看>>
ZStack基于华芯通打造ARM国产云平台 助力云上贵州多项应用
查看>>
200本“保护日记”记录黄山迎客松生长变化
查看>>
多方力量携手呵护“中华水塔”青海三江源
查看>>
互联网的下一波红利在哪里?
查看>>
拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
查看>>
JAVA大神说一个例子让你几分钟学会Annotation
查看>>
【进阶2-3期】JavaScript深入之闭包面试题解
查看>>
【Chrome扩展开发】定制HTTP请求响应头域
查看>>
面向Vue新人:写一个简单的倒计时按钮
查看>>
关于手势处理
查看>>
super
查看>>
5G美洲白皮书:5G开源的现状(pdf)
查看>>
世界移动通信大会
查看>>