CakePHP 3 htaccess忽略目录

问题描述 投票:0回答:1

经过大量研究,我仍在努力。

我的./.htaccess文件看起来像这样:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_URI} !^/trackparser/.*$

    RewriteRule    ^(\.well-known/.*)$ $1 [L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

但是,如果我转到www.mysite.com/trackparser,只会给我一个控制器错误提示。

如何使它忽略trackparser目录?

.htaccess cakephp-3.x
1个回答
0
投票

除了@GregSchmidt所要求的/,重写条件仅适用于遵循它们的第一个规则,因此您的配置基本上说:]]

IF (URI != ^/trackparser/.*$) {
    RewriteRule ^(\.well-known/.*)$ $1 [L]
}

RewriteRule ^$    webroot/  [L]
RewriteRule (.*) webroot/$1 [L]

如果URI与^/trackparser/.*$不匹配,您想要应用所有三个规则。为此,您可以反转条件并使用跳过规则,该规则在应用时将跳过N

后续规则的数量:
RewriteRule ^(\.well-known/.*)$ $1 [L]

RewriteCond %{REQUEST_URI} ^/trackparser(/.*|$)
RewriteRule . - [S=2]

RewriteRule ^$   webroot/   [L]
RewriteRule (.*) webroot/$1 [L]

如果满足条件,它将跳过2 CakePHP Webroot规则,因此基本上是在做:

RewriteRule ^(\.well-known/.*)$ $1 [L]

IF (URI != ^/trackparser(/.*|$)) {
    RewriteRule ^$   webroot/   [L]
    RewriteRule (.*) webroot/$1 [L]
}

注意删除的否定运算符,以及添加的(/.*|$)以使斜杠为可选。从理论上讲,well-known目录的规则(证书验证)也可以跳过,但是我将其免除,以免由于以后的更改而意外地不应用它。

另请参见

© www.soinside.com 2019 - 2024. All rights reserved.