上述的HttpModule方法在你要重写的URL含有.aspx 扩展名或者包含另一个被设置为ASP.NET处理的扩展名的情形下一切都工作。你这么做的话,不需要任何特定的服务器配置,你只要把你的应用拷贝到远程服务器,它会正常工作的。
但有的时候,你要重写的URL要么拥有一个不为ASP.NET处理的文件扩展名(譬如, .jpg, .gif, 或 .htm),要么根本没有扩展名。譬如,我们也许要把这些URL呈示成公开的产品目录网页(注意,它们没有 .aspx 扩展名):
http://www.store.com/products/Books
http://www.store.com/products/DVDs
http://www.store.com/products/CDs
在 IIS5 和 IIS6 中,使用ASP.NET处理上面这样的URL不是很容易。 IIS 5/6 使得在ISAPI扩展(ASP.NET就是这样一个扩展)里非常难以重写这些类型的URLS。你需要做的是使用ISAPI过滤器在IIS请求管道(request pipeline)的较早期实现重写。我将在下面的第四个方法里示范如何在 IIS5/6 实现这样的重写。
但好消息是, IIS 7.0使得处理这类情形容易之极。你现在可以在 IIS 请求管道的任何地方执行一个HttpModule,这意味着你可以使用上面的URLRewriter 模块 来处理和重写无扩展名的URL(甚至是带有 .asp,.php,或 .jsp 扩展名的URL)。下面示范了你在IIS7中该如何配置:
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<configSections>
    <section name="rewriter"
              requirePermission="false"
              type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
   </configSections>
  
  <system.web>
      
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
     </httpModules>
    
  </system.web>

<system.webServer>

<modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule" />
     </modules>

<validation validateIntegratedModeConfiguration="false" />

</system.webServer>

<rewriter>
    <rewrite url="~/products/(.+)" to="~/products.aspx?category=$1" />
   </rewriter>
  
</configuration>

注意一下<system.webServer>内<modules>部分设置为true的runAllManagedModulesForAllRequests属性。这个属性确保来自Intelligencia的UrlRewriter.Net模块(是在IIS7正式发布前编写的),会被调用,有机会重写到服务器的所有URL请求(包括文件夹)。上面的web.config文件非常酷之处在于:
1) 它在任何IIS7机器上都会工作,你不需要管理员在远程主机上启用任何东西,它也能在设置为中等信任安全等级(medium trust)的共享主机的环境场景下工作。
2) 因为我在<httpModules>和 IIS7 的<modules> 部分同时配置了UrlRewriter,我既能在 VS内置的web服务器(即Cassini)中,也能在IIS7下使用同样的URL重写规则。两者完全支持无扩展名的URL重写。这使得测试和开发非常容易。
IIS 7.0 将在今年的晚些时候作为Windows Longhorn服务器的一部分发布,将在几个星期内随Beta3版本的发布支持go-live许可。由于添加到IIS7中的所有的新宿主(hosting)特性,我们预期主机供应商将会非常快地开始积极提供IIS7账号,这意味着你应该很快就可以开始利用上述的无扩展名的URL重写支持。我们将在 IIS7 RTM 时段里发布一个为微软所支持的URL重写模块,该模板是免费的,你可以在IIS7上使用,并且这模块将对你web服务器上的所有内容的高级URL重写场景提供很好的支持。
样例下载:我建立的一个使用IIS7和UrlRewriter.Net模块展示无扩展名URL重写技术的样例应用可以在这里下载。

转载于:https://blog.51cto.com/zhangleiy/381514

在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写相关推荐

  1. ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI

    URL重写已经有很多的方法,但是多数都有一个缺点,就是不支持无扩展名的网页.微软提供的方法需要在根目录里面建立jyk的文件夹,然后再建立一个default.aspx的文件,如果您有100名会员的话,这 ...

  2. iis5.1/6.0/7.0+ 配置url重写 无扩展名伪静态

    最近在搞url重写 遇到iis 无扩展名及html映射问题 供后人查看 因为考虑功能比较多(URLRewriter组件有些功能满足不了要求)所以就用了HttpModule方法重写 iis5.1中 添加 ...

  3. 如何设置IIS实现无扩展名重写

    打开站点或者虚拟目录的属性框,在"目录"页里面点击"配置..."按钮 弹出"应用程序配置"框后,点击下面的"插入..." ...

  4. misc中文件无扩展名修复

    在CTF的misc杂项中,经常会发现一些文件无扩展名,因此我们需要使用winhex(密码是:x56l)去查看文件的16进制编码.常见的文件头如下: (JPEG)jpg: FF D8 FF (PNG)p ...

  5. HashSet中的add()方法( 三 )(详尽版)

    上接HashSet中的add()方法( 二 )(详尽版) ,前两篇说的是泛型为String类的add()方法的具体执行过程,此后三篇说说泛型为自定义类的add()方法的具体执行过程: 首先让我们来自定 ...

  6. 【转】最详细的Log4J使用教程一、入门实例二、Log4J基本使用方法三、Spring中使用Log4J四、实战经验总结

    原文地址:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供 ...

  7. java哪些类重写equals方法_Java自定义类中重写equals方法

    equals方法的要求: a.自反性:对于任何非空的x,x.equals(x)都应该返回true b.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也 ...

  8. iOS开发中的单元测试(三)——URLManager中的测试用例解析

    本文转载至 http://www.cocoachina.com/cms/plus/view.php?aid=8088   此前,我们在<iOS开发中的单元测试(一)&(二)>中介绍 ...

  9. String类中的equals方法与Object类中的equals方法的不同点

    1.首先我们看看Object类中的equals方法 public boolean equals(Object obj) {return (this == obj);} 我们可以看出Object类中判断 ...

最新文章

  1. java.lang.Thread使用及总结
  2. 开发日记-20190617 关键词 bash命令尝试模拟点击事件
  3. 【学习笔记】25、关系数据库存储
  4. 2021 .NET Conf China 主题分享之-轻松玩转.NET大规模版本升级
  5. 【Python CheckiO 题解】Remove Accents
  6. Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景
  7. 【git】IDEA下GitLab分支使用测试
  8. HPUX分析Crash Dump_q4pxdb vmunix
  9. socket网络字节序相关概念
  10. 使用Visual C#制作可伸缩个性化窗体
  11. Android Eclipse 处理重构“AndroidPackageNameRefactoring”时捕获到异常
  12. java的argv_Java:使用org.apache.commons.cli解析传入参数args,该包会协助解析argv参数...
  13. iOS 乱码问题之一
  14. 苹果手机访问html文件夹,iPhone如何访问Windows的共享文件夹
  15. 如何解决安装PD17虚拟机 “操作失败 执行该操作失败”问题
  16. 谷歌翻译不能用,解决方案
  17. MFC 108问题
  18. 如何实现视频平台会员多账号登录
  19. 支付宝牵头,近30亿红包等你领,攻略全在这里了!
  20. 泽塔云荣膺“中国高科技高成长50强”,成唯一上榜超融合企业

热门文章

  1. 用hundred造句子_6分以上的人句子长啥样?
  2. Redhat安装gtk2.0和pkg-config
  3. C语言 —— 把字符指针中的字符串,存入字符数组中
  4. idea2018使用整理
  5. [HNOI2011]数学作业 分段矩阵乘法
  6. 解决ubuntu adb devices 找不到设备
  7. 怎样通过WireShark抓到的包分析出SIP流程图
  8. 实战1--应用EL表达式访问JavaBean的属性
  9. spring webmvc使用ResponseBody前,在配置文件中的配置
  10. HDU 1198 Farm Irrigation