奇怪的行为RewriteCond在Apache 2.2上

时间:2010-09-29 15:18:56

标签: mod-rewrite apache2

正在运行.htaccess config:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^thumbs/(.*)$
RewriteRule ^(.+)$ /index.php [L,QSA]

对于/ thumbs /文件夹的所有404查询都不必由/index.php脚本捕获。为什么top .htaccess配置工作和底部配置不起作用?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/thumbs/(.*)$
RewriteRule ^(.+)$ /index.php [L,QSA]

Apache 2.2.9,Debian

2 个答案:

答案 0 :(得分:0)

我认为这是因为

中的第一个斜杠
RewriteCond %{REQUEST_URI} !^/thumbs/(.*)$

答案 1 :(得分:0)

REQUEST_URI 包含请求的URI路径,并始终以斜杠开头。

因此模式^thumbs/(.*)$永远不会匹配,因为它缺少前导/。但另一个条件!^/thumbs/(.*)$应匹配URI路径不以/thumbs/开头的每个请求。