手册 >> 访问交互 >> IIS的URLRewrite伪静态设置

IIS的URLRewrite伪静态设置

在IIS(Internet Information Services,微软的服务器软件)之中,URLRewrite伪静态的实现。

Rewrite.dll + httpd.ini文件 下载

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

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

以上资料可以参考http://www.isapirewrite.com/

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

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

  1. 将Rewrite.dll拷贝到c:Rewrite.dll(也可以拷贝到C:WINDOWS目录内,位置根据喜好可以自由放置);
  2. 在IIS的Isapi上添加这个筛选器, 筛选器名称Rewrite,可执行文件选择Rewrite.dll;
  3. 重新启动IIS,成功后会有如下显示:
  4. 在配置了站点筛选器的站点根目录下放置httpd.ini文件。httpd.ini是配置文件,如果您了解Rewrite 规则,可以直接对其进行编辑;
  5. 配置完成。

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]

Rewrite.dll + httpd.ini文件 下载