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

 现在经常用到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组的用户执行的。

时间: 2024-07-31 21:43:25

IIS6 rewrite没有问题但rewrite规则无效解决办法的相关文章

win8下XAMPP中Apache模块无效解决办法

  win8下XAMPP中Apache模块无效解决办法 win8下系统默认占用80端口,导致apache无法打开. 以管理员权限运行c:windowssystem32cmd.exe C:WINDOWSsystem32>net stop http HTTP Service 服务已成功停止. C:WINDOWSsystem32>netstat -ano | findstr 0.0.0.0:80 C:WINDOWSsystem32>sc config http start=disabled [

css ie6、ie7、ie8中overflow:hidden无效解决办法

产生原因: 当父元素的直接子元素或者下级子元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效. 解决办法: 我们在IE 6内发现子元素会超出父元素设定的高度,即使父元素设置了overflow:hidden. 解决这个bug很简单,在父元素中使用position:relative;即可解决该bug ie7和ie6 发现在ie6和ie7里面overflow:hidden无效,还是会超出外层div 后来在外层div上面加上position:rel

SQL Server 2008为SQL Server代理服务提供的凭据无效 解决办法

在Windows Server 2008安装SQL Server 2008出现下面的问题: 安装时在"服务器配置"环节出现以下问题: 为sql server代理服务提供的凭据无效 为sql server服务指定的凭据无效 为analysis services服务提供的凭据无效 为reporting services服务提供的凭据无效 为integration services服务提供的凭据无效   解决方法也是非常简单的. 解决方法 SQL Server代理 选 SYSTEM SQL

JavaScript的history.back()在FireFox和Chrome无效解决办法

小编最初写法是history.back()如下 htm <div class="btn1"><a href="#" id="calcelbtn">取消</a></div>   js代码 $('#calcelbtn').click(function(){  history.back();   }) 测试后发现在ie可以使用,在在FireFox和Chrome无效了,后来百度了一下发现要按下面方法定才被在

flash as3中换行符无效解决办法

如今从xml中加载进来并读出的字符串中的换行符不起作用 我很郁闷,多次查查不到什么原因 但试出了用<br/>代替n可以解决此问题 最后才找到了原因.原来不知道为什么xml中的n都变成了\n 所以解决的办法有两个: (1)用<br/>代替n (2)把\n换成n:data.text = data.text.replace(/\n/g,"n");//解决n换行符不起作用的问题..

php file_exists无效解决办法

方法1 : 据官方手册上描述若php教程的safe mode相关的设置过于苛刻,就会出现这样的情形:尽管文件真实存在也被误报,认为文件不存在. 由于服务器端的php.ini我们无法操纵,当用ini_set()也关闭不了safe mode模式,我们只有退而求其次,找一个更可靠.安全的检测方法来检测文件是否存在.我们可以借助 $_server['document_root'] 来加以实现.$_server['document_root'] 返回的是网站的根目录,该目录的最后一个子目录不包含目录标志符

css float父元素自适应高度无效解决办法

当几个并列div元素使用float属性时,由于父容器没有定义实际高度(height),在IE中显示出现问题,无法显示父容器的背景颜色或背景图片 做了如下设置实验情况:1. 不正常显示的设置 子容器:使用float 父容器:不定义height 2. 在测试中发现,父容器在不定义高度时,取消float属性,背景颜色显示正常 子容器:不使用float 父容器:不定义height 3. 而给父容器定义了高度后,子容器再使用float则一切正常 子容器:使用float 父容器:定义height 原因及解决

Intellij IDEA 使用Spring-boot-devTools无效解决办法

相信大部分使用Intellij的同学都会遇到这个问题,即使项目使用了spring-boot-devtools,修改了类或者html.js等,idea还是不会自动重启,非要手动去make一下或者重启, 就更没有使用热部署一样.出现这种情况,并不是你的配置问题,相信自己,热部署那几个设置很简单,其根本原因是因为Intellij IEDA和Eclipse不同,Eclipse设置了自动编译之 后,修改类它会自动编译,而IDEA在非RUN或DEBUG情况下才会自动编译(前提是你已经设置了Auto-Comp

Android使用TextView,设置onClick属性无效解决办法

Android在布局文件中为View提供了onClick属性,使用方法如下: <TextView android:id="@+id/user" android:layout_width="@dimen/px_171" android:layout_height="fill_parent" android:onClick="iconClickListener" android:clickable="true&qu