Dok*_*r J 3 mod-rewrite rewrite .htaccess apache-2.2
我似乎遇到了 Apache 2.2 的 Rewrite 模块(在 FreeBSD 8 上运行)的问题。我的.htaccess文件如下:
Options -Indexes
RewriteEngine on
RewriteRule ^xpaste$ cross.php [L]
RewriteRule ^x([a-f0-9]*)$ cross.php?id=$1 [L]
RewriteRule ^(gen|[a-f0-9]+)$ index.php?$1 [L]
RewriteRule ^(.*)$ index.php [L]
Run Code Online (Sandbox Code Playgroud)
然而不知何故,最后一条规则覆盖了其他三条规则。一旦我将其注释掉,其他规则就会按预期工作:
www.example.com/xpaste 打开 cross.phpwww.example.com/x132633 打开 cross.php?id=132633www.example.com/gen 打开 index.php?gen我已经试过的各种组合L,NS和S=n每个标志RewriteRule,但除非我注释掉最后一条规则,一切都被定向到index.php。RewriteRule一旦找到匹配项,如何让 Apache 停止处理s?
RewriteRule 生成一个INTERNAL REDIRECT,然后从第一个RewriteRule(RewriteRule ^xpaste$ cross.php [L])开始重复处理。您需要在最后一个 RewriteRule 之前添加 RewriteCond:
RewriteEngine on
RewriteRule ^xpaste$ cross.php [L]
RewriteRule ^x([a-f0-9]*)$ cross.php?id=$1 [L]
RewriteRule ^(gen|[a-f0-9]+)$ index.php?$1 [L]
RewriteCond %{REQUEST_URI} !^/(cross|index)\.php$
RewriteRule ^(.*)$ index.php [L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8209 次 |
| 最近记录: |