IIS下的URL重写组件:ISAPI Rewrite 介绍及相关应用

什么是URL重写(URL Rewrite)?
URL 重写就是把传入 Web 请重定向到其他 URL 的过程 。
比如浏览器发来请求http://www.hua-lin.net/blog/about/ , 服务器自动将这个请求中定向为http://www.hua-lin.net/blog/index.php?pagename=about; 关于URL重写的相关内容我们将在以后的文章中详细介绍 。
我们知道在Apache中有mod_rewrite来实现URL的重写功能(URL Rewrite) , 然而IIS并没有自带这个功能 , 因此我们就需要使用第三方组件来实现 。其实目前有好几种IIS下的Rewirte组件 , 都是通过ISAPI筛选器来加载然后实现URL重写的 。
用得比较广泛的一个是ISAPI Rewrite , 基本上国内支持Rewirte功能的Windows网站空间都采用了该组件 。ISAPI Rewrite组件有免费版以及商业版 , 免费版只支持全局httpd.ini配置(不能对每个站点进行单独设置 , 除非通过加载不同的dll来实现 , 比较麻烦 。)而商业版支持用户自定义httpd.ini文件 , 只要放在站点根目录下就能生效 。这个大大方便了用户自己修改URL重写规则 。
ISAPI Rewrite是一个基于正则表达式的强大的URL处理引擎 , 他使用起来基本上就像Apache的mod_rewrite , 但是他是专门为微软的Internet Information Server (IIS)设计的 。
ISAPI Rewrite是一个使用纯C/C编写的ISAPI筛选器 , 所以速度是相当快的!ISAPI Rewrite使你可以自由的规划网站的URL 。
ISAPI全称为Internet Server Application Program Interface 。
ISAPI Rewrite 2 产品地址:http://www.isapirewrite.com/
ISAPI Rewrite 3 产品地址 :http://www.helicontech.com/isapi_rewrite/
3.0版本主要特性是支持采用Apache的 .htaccess文件来在IIS中使用 mod_rewrite 。这个特性使得IIS和Apache在日常应用的Rewrite上的区别基本消除了 。
国内大部分空间商都没有关注到商业版这个非常方便的功能 , 只为用户设置全局重写规则 , 这样会影响服务器性能 , 以及当某些规则比较复杂时 , 会造成冲突 , 给用户带来不便 。
华麟创想在提供网站空间时 , 特别关注了这方面的功能 , 使用户能够自定义自己站点的URL重写规则 , 让用户可以更好的使用网站空间 。
安装篇:
ISAPI Rewrite在安装上相当方便 , 如果你下载的是安装包 , 只需要按照提示进行安装即可 。而如果你下载的是压缩包 , 那么只要将文件夹解压缩的任意目录 , 然后在IIS站点的ISAPI筛选器中添加ISAPI Rewrite的dll即可 。
在站点属性中 , 选择ISAPI筛选器 , 然后添加ISAPI Rewrite组件即可 。
这里要注意的是:必须给予ISAPI Rewrite所在目录IIS_WGP组的读写权限 , 否则你的网站就会直接Service Unavailable , 应用程序池遇到错误而停止 。在事件查看器中可以找到相应的错误 。
如果在安装上有问题 , 欢迎您到华麟创想社区提问 , 我们会尽力为您解答 。
使用篇:
安装成功以后 , 接下来就要看看怎么用了 。我们这里只说一下最简单的应用 , 因为大多数人只用URL重写功能来实现SEF(搜索引擎友好) , 以及简单的防盗链的功能(可以参考利用 ISAPI Rewrite 实现防盗链) 。如果您有兴趣了解一些深入的功能的话 , 可以去看一下官方的使用手册 。
我们需要对ISAPI Rewrite编写URL重写的规则 , 将这些规则写在httpd.ini中 , 用户访问时 , 就能实现URL重写 。
编写Rewrite规则需要我们对正则表达式有一定的了解 , 推荐大家看一下《30分钟正则表达式入门教程》 。当你了解了正则表达式以后 , 如何编写规则请参考官方使用手册以及一些例子 , 相信很快就会上手 。
ISAPI Rewrite 2使用手册:http://www.isapirewrite.com/docs/ISAPI_Rewrite
ISAPI Rewrite 3使用手册:http://www.helicontech.com/isapi_rewrite/doc/

推荐阅读