加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

mod-rewrite – 正则表达式负面预测不适用于不同Apache版本之间

发布时间:2020-12-14 06:27:32 所属栏目:百科 来源:网络整理
导读:我有一个mod_rewrite行在Apache 2.2下工作,但不在Apache 1.3下: RewriteRule ^(?!index.php)(?!skin/)(?!js/)(.+) /index.php?file=$1 [NC,L] 如果我丢失括号之间的负前瞻组件,我将丢失500状态代码. GoDaddy不会为这个客户端的软件包(叹息)升级httpd,所以有
我有一个mod_rewrite行在Apache 2.2下工作,但不在Apache 1.3下:
RewriteRule     ^(?!index.php)(?!skin/)(?!js/)(.+)      /index.php?file=$1              [NC,L]

如果我丢失括号之间的负前瞻组件,我将丢失500状态代码. GoDaddy不会为这个客户端的软件包(叹息)升级httpd,所以有人有一个可以在1.3中工作的解决方案(而且不是太乱了:P)?或者甚至更好的人可以解释这里可能会发生什么?我仍然很好奇,因为我找不到任何关于1.3中使用的Perl正则表达式引擎的信息,不支持负面预测……

Apache 1.3不使用Perl兼容的常规expressoins(PCRE),它使用POSIX正则表达式. POSIX正则表达式不支持负向前瞻.从Apache 2开始,PCRE支持是 new feature.

至于如何使其工作,你可能需要使用一些RewriteCond,如果它匹配这三个中的一个,则规则不会触发……例如也许:

RewriteCond   %{REQUEST_URI}   !index.php.*
RewriteCond   %{REQUEST_URI}   !skin/.*
RewriteCond   %{REQUEST_URI}   !js/.*
RewriteRule   ^(?!index.php)(?!skin/)(?!js/)(.+)  /index.php?file=$1    [NC,L]

当然,我还没有对此进行测试……我已经没有任何Apache 1.3了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读