【概述】

URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力;而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;它还可以提高你的网站的安全性;而且通常会让你的网站更加便于使用和更专业。

【过程】

实现

1、新建一个 【ASP.NET 空Web应用程序】项目:WebApp,并添加一个1.html的文件

2、 在解决方案中先添加一个【类库】项目:UrlReWriter,在项目中添加类:MyHttpModule,该类继承IHttpModule接口,代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Web;
  7.  
  8. namespace UrlReWriter
  9. {
  10. public class MyHttpModule : IHttpModule
  11. {
  12. public void Init(HttpApplication context)
  13. {
  14. context.BeginRequest += new EventHandler(ContextOnBeginRequest);
  15. }
  16.  
  17. private void ContextOnBeginRequest(object sender, EventArgs eventArgs)
  18. {
  19. HttpApplication application = sender as HttpApplication;
  20. HttpContext context = application.Context;
  21. string url = context.Request.Url.LocalPath;
  22.  
  23. Regex reg = new Regex(@"(.*)?\.haha$");
  24. if (reg.IsMatch(url))
  25. {
  26. context.RewritePath(reg.Replace(url,"$1.html"));
  27. }
  28. }
  29.  
  30. public void Dispose()
  31. {
  32. throw new NotImplementedException();
  33. }
  34. }
  35.  
  36. }

可以看出此类的作用是将后缀为.haha的请求路径重写为.html

3、在WebApp项目中添加UrlReWriter项目的引用,并在WebApp项目中的Web.config文件中添加如下配置(红色部分为添加的)

  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <!--
  4. 有关如何配置 ASP.NET 应用程序的详细信息,请访问
  5. http://go.microsoft.com/fwlink/?LinkId=169433
  6. -->
  7.  
  8. <configuration>
  9. <system.web>
  10. <compilation debug="true" targetFramework="4.0" />
  11. </system.web>
  12. <system.webServer>
  13. <modules>
  14. <add name="UrlReWriter" type="UrlReWriter.MyHttpModule,UrlReWriter"/>
  15. </modules>
  16. </system.webServer>
  17. </configuration>

关于配置文件的说明:

IIS应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”。

在 经典模式 下,配置文件需要将httpModules节点添加到system.web节点中,而在集成模式下,需要将httpModules节点改为modules节点,并放到system.webServer节点中。

即:再经典模式下的配置文件应该这样写(红色部分为添加):

  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <!--
  4. 有关如何配置 ASP.NET 应用程序的详细信息,请访问
  5. http://go.microsoft.com/fwlink/?LinkId=169433
  6. -->
  7.  
  8. <configuration>
  9. <system.web>
  10. <compilation debug="true" targetFramework="4.0" />
  11. <httpModules>
  12. <add name="UrlReWriter" type="UrlReWriter.MyHttpModule,UrlReWriter"></add>
  13. </httpModules>
  14. </system.web>
  15. </configuration>

如果是集成方式,请用第一种配置文件

4、测试

再浏览器中输入地址http://localhost:31872/1.haha

因为在管道中拦截了此次请求,并将地址重写为http://localhost:31872/1.html,所以最终会将1.html页面返回给浏览器。

原文链接:https://www.cnblogs.com/maitian-lf/p/3782012.html

【转】Asp.net实现URL重写的更多相关文章

  1. ASP.net的url重写

    http://blog.csdn.net/windok2004/article/details/2432691 1. 有关于URL的重写,本文也只是拿来主意.相继有MS的组件“URLRewriter” ...

  2. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  3. asp.net 页面url重写

    不更改情况下,页面路径为index.aspx?id=1,现在输入页面路径index/1时,也能访问到页面,这一过程叫做url重写 ①:在一个类里制定路径重写规则,以下为自定义UrlRewriterFi ...

  4. (转)ASP.net的url重写

    1. 有关于URL的重写,本文也只是拿来主意.相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的I ...

  5. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  6. Asp.net实现URL重写

    原文:Asp.net实现URL重写 [概述] URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程.重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读 ...

  7. ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...

  8. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  9. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

随机推荐

  1. 如何把手机app的视频下载到手机上?网页上的视频怎么下载?

    手机上小视频怎么下载?求推荐不需要安装软件的下载方法? 如何把手机app的视频下载到手机上?比如把快手上的视频下载到手机上? 如何免费下载视频? ... 答案当然是用iiiLab提供的在线视频解析下载 ...

  2. bzoj千题计划283:bzoj4516: [Sdoi2016]生成魔咒(后缀数组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=4516 考虑在后面新加一个字母产生的影响 假设是第i个 如果不考虑重复,那么会增加i个不同的字符串 考 ...

  3. html5 canvas用图案填充形状

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 第11月第8天 ffmpeg ffplay

    static int ffplay_video_thread(void *arg) { FFPlayer *ffp = arg; VideoState *is = ffp->is; AVFram ...

  5. Web安全测试-WebScarab

    [功能] WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架.其原理很简单,WebScarab可以记录它检测到的会话内容(请求和应答),并允许使用者可以通过多种形式来查看记录. ...

  6. TrID文件类型识别linux版

    读取文件头根据特征码进行文件类型匹配. 官方:http://mark0.net/soft-trid-e.html windows版本小工具:FileAnalysis 以下是linux版本 wget h ...

  7. ioctl函数详细说明(网络)

    ioctl 函数 本函数影响由fd 参数引用的一个打开的文件. #include<unistd.h> int ioctl( int fd, int request, .../* void ...

  8. Spring加载XML配置文件

    原创链接:http://www.cnblogs.com/yanqin/p/5282929.html(允许转载,但请注明原创链接) BeanFactory加载单个文件 当使用beanfactory去获取 ...

  9. 什么是Jupyter Notebook?

    Jupyter Notebook, 以前又称为IPython notebook,是一个交互式笔记本, 支持运行40+种编程语言. 可以用来编写漂亮的交互式文档. Linux下, Jupyter Not ...

  10. PhpStorm,Pycharm,Goland破解

    phpstorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查.不但是php开发的利器,前端开发也是毫不逊色的.下面记录Php ...