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

我有一个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了.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...