#1 jake

在IIS(Internet Information Services,微软的服务器软件)之中,URLRewrite伪静态的实现。
Rewrite.dll + httpd.ini文件  下载:
iis_urlrewrite[1].zip

由于目前IIS的URLRewrite插件是收费软件,所以我们只能找比较早前的免费版本来进行设置。同时这个早期版本的URLRewrite对比apache的htaccess来说,有着明显的不足:


  • 在正则匹配功能方面有所不足,仅能针对每一个在站点根目录中的文件和文件夹,都需要单独设置Rewrite规则。
  • 一个站点仅能使用一个httpd.ini文件配置,也就是说不能在二级目录使用。
  • 如果要对IIS中的多个“站点”进行URLRewrite的设置,都要分别做一次以下的配置(无法进行全局配置)。
以上资料可以参考http://www.isapirewrite.com/

这里说说如何在IIS中设置与SpeedPHP框架对应的URLRewrite规则:

(以下步骤及图片,出自http://www.8xif.com/web/wordpress-isapi-solution-of-static-pages.html,感谢作者)


  • 将Rewrite.dll拷贝到c:Rewrite.dll(也可以拷贝到C:WINDOWS目录内,位置根据喜好可以自由放置);
  • 在IIS的Isapi上添加这个筛选器, 筛选器名称Rewrite,可执行文件选择Rewrite.dll;
  • 重新启动IIS,成功后会有如下显示:
    isapi-300x95[1].jpg
  • 在配置了站点筛选器的站点根目录下放置httpd.ini文件。httpd.ini是配置文件,如果您了解Rewrite 规则,可以直接对其进行编辑;
  • 配置完成。
httpd.ini文件内容
[ISAPI_Rewrite]
Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default.ida|root.exe|..).* . [F,I,O]

RewriteRule /js/(.*) /js/$1 [L]
RewriteRule /css/(.*) /css/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]

RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
请注意,如果你在根目录增加了文件夹或者文件,均需要在httpd.ini文件中增加对应的规则,否则访问该文件夹和文件都会转向到index.php文件。比如说以下是增加了一个叫img的文件夹和一个sitemap_baidu.xml的文件
RewriteRule /sitemap_baidu.xml /sitemap_baidu.xml [L]
RewriteRule /img/(.*) /img/$1 [L]


2012-08-04 14:01:38