@helosh16年前
这几天在忙着如何URL静态化,现在终于解决。具体呢,看下面咯。收集整理。
我们知道在Apache中有mod_rewrite来实现URL的重写功能(URLRewrite),然而IIS并没有自带这个功能,因此我们就需要使用第三方组件来实现。其实目前有好几种IIS下的Rewirte组件,都是通过ISAPI筛选器来加载然后实现URL重写的。
用得比较广泛的一个是ISAPI Rewrite,基本上国内支持Rewirte功能的Windows 虚拟主机都 采用了该组件。ISAPIRewrite组件有免费版以及商业版,免费版只支持全局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_Rewrite3_0058_Lite.msi 免费版。下载安装。
安装运行后,打开管理工具中Internet信息管理(IIS管理),在网站单击右键选属性,就可以看到ISAPI_Rewrite已经被加入到了ISAPI筛选器中。
按照默认安装的位置,可以在 C:Program FilesHeliconISAPI_Rewrite 找到 httpd.conf 在此文件中输入Rewrite的规则即可。
正常情况下,修改rewrite规则不需要重起IIS。
这里要注意的是:必须给予ISAPI Rewrite所在目录IIS_WGP组的读写权限,否则你的网站就会直接Service Unavailable,应用程序池遇到错误而停止。在事件查看器中可以找到相应的错误。当然,网上有很多别人写好的Rewrite Rules(重写规则),我们可以方便的使用,因为大部分程序所使用的URL重写规则是一样的,比如Discuz!, WordPress等。日后我们会整理一些常用的URL Rewrite 规则提供给大家使用,当然如果你的网站没有现成的规则,也可以通过这些规则进行简单的修改后直接使用。当我们已经写好了httpd.ini以后,将httpd.conf放在相应的位置后就能使用了(免费版放在ISAPI Rewrite安装目录中,商业版只需要放在需要重写的站点根目录下就可以了)。
参考资料:
http://www.menhutong.com.cn/bbs/thread-37700-1-1.html
http://chenfangyi.com/isapirewrite-regular-expression.html
http://chenfangyi.com/isapirewrite-iisrewrite.html