一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

IIS6 rewrite没有问题但rewrite规则无效解决办法

时间:2022-06-30 18:13:33 编辑:袖梨 来源:一聚教程网

 现在经常用到ISAPI_Rewrite,遇到的问题就是在本地测试的时候,一切没有问题,到服务器上,竟然不起作用。郁闷

安装IIS的rewrite组建

由于服务器安装了IIS6,因此要实现伪静态要先下载rewrite组建,这里博主提供了下载.

ISAIP筛选器添加rewrite组建

重启服务器。

这时候我要写一个重写掉index.php的rewrite规则,但是老是不生效。

 代码如下 复制代码

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule /httpd(?:.ini|.parse.errors) / [F,I,O]
RewriteCond URL ^/(?!static|index.php|robots.txt|favicon.ico|cmsinfolist.php).*
RewriteRule /(.*) /index.php/$1 [I,L]

经过试验发现把httpd.ini文件放在 Rewrite.dll的目录的时候就可以实现重写,因此感觉可能是权限的问题。最后给了网站目录 IIS_WPG写权限之后就可以使用了。


经过我的一些探索,发现了Rewrite不起作用的原因如下:


 1、IIS_WPG对ISAPI_Rewrite.dll没有读取的权限
 2、IIS_WPG对httpd.ini没有读取的权限
 3、IIS_WPG对站点目录中的httpd.ini没有读取的权限(用于每个站点有独立的httpd.ini)。
 4、IIS_WPG对站点目录中没有写入的权限(ISAPI_Rewrite要写入一个httpd.parse.errors文件)。

 基本上就是这个问题了,如果是启动进程池的用户不是IIS_WPG组的,请修改成相应的用户有足够的权限。

3,4这两个问题可能经常有朋友会遇到,ISAPI_Rewrite安装好了,只有在ISAPI_Rewrite的安装目录的httpd.ini起作用,对于Web站点根目录的站点无效。其实就是IIS_WPG组对站点目录没有读取的权限,ISAPI_Rewrite是用IIS_WPG组的用户执行的。

热门栏目