子目录中的基本身份验证破坏了父目录的重写规则?

子目录中的基本身份验证破坏了父目录的重写规则?

在/public_html/.htaccess中,我有如下重写规则:

RewriteRule ^(subdir1)($|/) - [L]
RewriteRule ^(subdir2)($|/) - [L]

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [NC]
RewriteRule ^(.*)$ /www.example.com/$1 [L]

因此,如果访问者访问该 URLhttp://www.example.com/subdir1(或 subdir2),它将提供来自 /public_html/subdir1(或 subdir2)的文件。否则,它将“默认”使用 /public_html/www.example.com 中的文件。这按预期工作。

但是,如果我将 .htaccess 和关联的 .htpasswd 文件放在 /public_html/subdir1 中:

AuthType Basic
AuthName "Private"
AuthUserFile "/public_html/subdir1/.htpasswd"
require valid-user

...RewriteRules 突然中断。访问http://www.example.com/subdir1不再提供来自 subdir1 的文件,而是从位于 public_html/www.example.com/ 的 CMS 返回 404。

发生了什么?为什么向子目录添加密码会破坏父级的重写规则?

相关内容