Step1数据系统技术(1.基于404错误的URL重写技术)


现在第一篇,讨论我的网站之中使用的URL重写技术,实际上,该技术并不是我编写的,可能有用户能够记得,我的网站www.step1.cn原来就是一个博客,那个时候采用的系统是博客园提供的cnblogs程序(我将这个程序改装成能够在当时的虚拟主机上运行,可花了不少功夫),后来我将博客迁到这里之后,对Step1.cn进行大的改版,当时我实在舍不得这套博客程序之中使用的URL重写的技术,因此专门的从那个cnblogs程序之中将相关的代码从其中拆分出来成一个DLL类,在我的网站使用URL重写技术。

  当时由于cnblogs.cn这个程序结构相当优秀,所以我更改的并不多,主要有以下几点:

  1.基于404错误的URL重写技术。因为有的虚拟主机并不支持URL重写技术,尤其是你要对静态的HTML文件进行URL重写(当然我并没有使用这个技术),可是基本上没有虚拟主机支持对静态的HTML文件进行URL重写(至少我没有用过),于是我想到了一个变通的方法,那就是修改服务器的404错误页面的设置,将该设置指向到一个特定的ASPX文件,再在ASPX文件之中调用cnblogs的URL重写程序。

  Error404.aspx的对应类代码:

1  public class Error404 : System.Web.UI.Page
2  {
3    private void Page_Load(object sender, System.EventArgs e)
4    {
5      if(Request.QueryString!=null)
6      {
7        string[] queryString=Request.RawUrl.Substring(Request.RawUrl.IndexOf("?")+1).Split(new char[]{';'});
8        if(queryString.Length==2 && queryString[0]=="404")
9        {
10          Uri uri=new Uri(queryString[1]);
11          string query=uri.Query;
12          if(query.StartsWith("?"))
13            query=query.Substring(1);
14          this.Context.RewritePath(uri.AbsolutePath,uri.UserInfo,query);
15          (new UrlReWriteHandlerFactory()).GetHandler(this.Context,Request.RequestType,uri.PathAndQuery,Server.MapPath(uri.LocalPath)).ProcessRequest(this.Context);
16          this.Context.Response.End();
17        }
18      }
19    }
20  }

  我刚才看了一下,剩下的代码由于大部分摘自cnblogs的源码,而我更改的部分都很小,因此我不在本文之中提供源码,如果确有需要,可以首先去参考cnblogs的源码,也可以发邮件向我索取该部分的源码,我可以直接提供。

  总体上来讲,该URL重写机制,通过在Web.Config文件之中添加类似于如下的配置来实现对应的URL重写的功能:

1<HttpHandlerpattern="^/place/cn/([%0-9a-zA-Z/]*).aspx$"type="Step1.UrlRewriter.PageHandlerFactory,Step1.UrlRewriter"handlerType="Redirect"pageLocation="/place/Place.aspx?p={GetProperty(Content)}"/>
2  以上的配置,会将网址/place/cn/aaaaaaa.aspx自动在服务端转向到/place/Place.aspx?p=aaaaaaa

  详细的内容,可能我在后面讲解其他的技术的时候会重新提到



相关阅读:
网页设计常用的Javascript特效代码
VBS教程:属性-Size 属性
Linux挑战桌面市场微软延期XP救火
linux查看jvm性能信息相关命令介绍
PHP中使用数组实现堆栈数据结构的代码
关于Access打包软件的有关阐述
mysql4.0升级到mysql5(4.1),解决字符集问题
AJAX教程(11):AJAX XML 实例
Windows7 系统格式化C盘的操作步骤
Linux系统下安装配置Dynamips的方法
提高MySQL数据库查询效率的几个技巧
体验Java 1.5中面向(AOP)编程
PHP学习资料汇总与网址
Linux下让Apache以指定的用户和组来运行
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 生命交响曲 [图文]我最喜欢的桃花 壮族的民风民俗 广东省地质灾害与降雨的关系研究 想你,在月圆的时候 小学六年级作文800字:老师的事情真多 学生军训演讲稿 一年级作文范文:不败的英雄 三年级蜜蜂教学反思共5篇 笨蛙马斯 50岁以后的人生享受,每位朋友都看看 船·岸1000字 政治的根在哪里 人力资源管理概论心得体会 蛐蛐事件作文500字 不敢说再见 我喜欢出发作文450字 唯美古风:多少红颜悴,多少相思碎 读书笔记100字:我喜欢 城管演讲稿:我为你而骄傲_征文演讲 与明媚一起走过的日子 黄河之歌 四年级下册同步作文 发自己以前写的一些诗词,希望大家点评一二! 久违了冬雪 11月预备党员思想汇报:不断提高自己 我爱这美丽的秋天150字 幼儿园的朋友到我家 初中初二作文450字:尴尬的时刻 应用心理学专业实习报告 2015年下半年小学生德育工作计划 回家的感觉真好作文750字 新年的第一天作文600字 不要害怕,我一直都在 党支部下半年工作计划范文 感人的爱情祝福语短信 你原本可以看的透彻,又何必自找失落。 我做了一辆太阳能车作文 散文:曲终人散 2016党员干部廉洁从业承诺书 精选淘宝买家好评句子 高中高三作文750字:飞翔 我是真的想你爱你 2015行政年度工作计划 百合花作文800字 记一件最让我感动的事250字 江苏省昆山中学2016—2017学年度第一学期工会工作计划 初中初一作文750字:心中的温暖 面对挫折不服输,在冷嘲热讽下追逐自己的梦想 我们辛苦打拼,不过为了让所爱的人过得更好

Copyright © 2016 phpStudy |