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