tjb*_*jbp 6 mod-rewrite regex apache-1.3
我有一个在 Apache 2.2 下工作的 mod_rewrite 行,但不在 Apache 1.3 下:
RewriteRule ^(?!index.php)(?!skin/)(?!js/)(.+) /index.php?file=$1 [NC,L]
Run Code Online (Sandbox Code Playgroud)
如果我丢失了括号之间的负前瞻组件,我将丢失 500 状态代码。GoDaddy 不会为这个客户端的包升级 httpd(叹气),所以有没有人有一个可以在 1.3 中工作的解决方案(而且不会太乱:P)?或者甚至更好,谁能解释这里可能发生的事情?我保持好奇只是因为我找不到关于 1.3 中使用的 Perl 正则表达式引擎的任何信息,不支持负前瞻......
Apache 1.3 不使用 Perl 兼容的正则表达式 (PCRE),它使用 POSIX 正则表达式。POSIX 正则表达式不支持负前瞻。PCRE 支持是Apache 2 中的一项新功能。
至于如何让它工作,你可能需要使用一些 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]
Run Code Online (Sandbox Code Playgroud)
当然,我还没有测试过这个……我没有任何 Apache 1.3 了。
| 归档时间: |
|
| 查看次数: |
7754 次 |
| 最近记录: |