ISAPI Rewrite/IIS Rewrite无效的可能原因

2008-12-10 6:36| 分类:服务器| 标签: | 8,174 次点击

对SEO的追求有点强迫的症状了。于是用上了ISAPI Rewrite,ISAPI_Rewrite是一个强大的基于正则表达式的URL处理引擎,我安装的是官方的ISAPI_Rewrite3_0058_Lite.msi 免费版。免费版与收费版的主要区别是:“No support for distributed .htaccess configurations, directory and web site level configurations. Only one global httpd.conf configuration file will be loaded from Lite version installation folder.”

安装运行后,打开管理工具中Internet信息管理(IIS管理),在网站单击右键选属性,就可以看到ISAPI_Rewrite已经被加入到了ISAPI筛选器中。

按照默认安装的位置,可以在 C:\Program Files\Helicon\ISAPI_Rewrite 找到 httpd.ini 在此文件中输入Rewrite的规则即可。

正常情况下,修改rewrite规则不需要重起IIS,在为Apache编写的Rewrite的规则中,通常把

<IfModule mod_rewrite.c>
RewriteEngine On RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index.php?$2 </IfModule>

其中黑体的部分去掉即可成为ISAPI Rewrite的规则。

但在我的服务器上,调试了很久都调试不出来效果,不清楚到底有无加载这个筛选器,于是我在虚拟机上又试了试。一次便试验成功了,证明是我的服务器其他地方的配置问题,看到IIS下安装配置ISAPI Rewrite,实现asp的静态化的一句话:“默认是装在C:\Program Files\Helicon下,要注意的是这个目录everyone要有读取权限。”才恍然大悟。

因为对系统盘的权限设置过分严格,所以导致新安装的组件都没有everyone权限,包括这里的Helicon文件夹,所以无法正常运行ISAPI Rewrite。但我添加了everyone的读取权限以后,URL Rewrite仍旧没有生效,又找了很多原因,直到最后只重启了一下变成功了。原来更改了组件的权限之后需要重启IIS。现在总结下:

ISAPI Rewrite无效/ISAPI Rewriterule无效的几个可能原因:

1、最可能的原因:C:\Program Files\Helicon没有开放everyone组的读取权限。

2、其次可能原因:C:\Program Files\Helicon已经开放everyone组的读取权限,但没有重启IIS。

2、不可能的原因1:虽然URL Rewrite功能看起来像是新建了目录,但实际上网站程序所在目录对于everyone组只要有普通的读取权限,并不需要有写权限。只要网站能被访问就不是这个网站权限设置的问题。

4、不可能的原因2:不需要像网上那么多的教程那样在IIS中做其他设置(在每个站点都添加了ISAPI Rewrite的ISAPI筛选器,对于这个免费版,安装完即可在也只能在全局范围内生效。所以不需要对每个站点进行设置。

改了权限后,必须在服务里重启一下IIS服务。但我在虚拟机里面没有任何重启操作(安装完后应该有一次自动的重启)。怎样判断何时重启呢?我有个粗略的方法,IIS对于是否要重启的策略可能是这样:对组件访问权限的更改,要在重启后才能生效;而对组件配置的更改(如httpd.conf)则不需要重启即可生效。在我的虚拟机中刚安装后ISAPI Rewrite程序目录的设置和权限就已经是足够开放的了,而且之后没有更改过权限,所以才不需要重启。

实际上,URL重写还有另外一个软件:IIS Rewrite,因为该软件主页的PR值居然是0,所以就没试过这个软件。接下来学习一下正则表达式,好尽快做出效果。

相关文章

  1. 4条评论

  2. 蓝皮 2008-12-10 13:18

    SEO发烧友。鉴定完毕。

    [回复]

  3. fair 2009-02-20 11:02

    为什么已经加载了,但是有时候访问还是没有重写呢?
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^/html/(\d+)\.html$ /article\.php\?id=$1 [iL]
    我是这样设置的,一时可以,一时又不行。

    [回复]

  4. bluespeeder 2009-04-13 2:18

    谢谢,问题解决了!

    [回复]

  1. 1 Trackback(s)

  2. 2009-11-12: 新版ISAPI Rewrite (Rewrite3_0067_Lite)无效的原因 | 陈方毅的灵感日志

发表您的评论

您的昵称:
您的邮箱:(可选,不会被公布)
您的网站: