为什么即使模式明显不匹配,我的 RewriteCond 也会匹配?

为什么即使模式明显不匹配,我的 RewriteCond 也会匹配?

看一下我的重写日志:

(2)使用请求的 uri /bundles/astrupsspectacle/spectacle.css 初始化重写引擎
(3)将模式 '^(.*)$' 应用于 uri '/bundles/astrupsspectacle/spectacle.css'
(4)RewriteCond:input='${REQUEST_URI}'pattern='!^/app\.php'=>匹配
(4)RewriteCond:输入='${REQUEST_URI}'模式='!^/bundles/'=>匹配
(2)重写'/bundles/astrupsspectacle/spectacle.css'->'/app.php/bundles/astrupsspectacle/spectacle.css'
(2)本地路径结果:/app.php/bundles/astrupsspectacle/spectacle.css
(2)以 document_root 为前缀,添加至 /srv/spectacle/web/app.php/bundles/astrupsspectacle/spectacle.css
(1)继续使用/srv/spectacle/web/app.php/bundles/astrupsspectacle/spectacle.css [确定]

它说pattern='!^/bundles/' => matched尽管清楚地没有。我的模式是:

RewriteCond ${REQUEST_URI} !^/bundles/

但我也尝试过:

RewriteCond ${REQUEST_URI} !^bundles/

乃至:

RewriteCond ${REQUEST_URI} !^bundles

而且都说“匹配”。这是什么鬼?

答案1

您使用的环境变量符号错误。应该是%而不是$。因此条件应该是

RewriteCond %{REQUEST_URI} !^/bundles/

相关内容