Dot-Htaccess

.htaccess 文件中子目錄的身份驗證

  • February 6, 2020

我有以下結構:

_auth/
  ->.htpasswd
website1/
website2/
website3/
.htaccess

我想將 AuthType Basic 添加到根目錄中的 .htaccess 中,以便 webiste1/ 和 website2/ 需要身份驗證,並且 website3/ 應該仍然可以訪問。這三個網站都有自己的域名。

我試過:

<directory "/website1">
AuthType Basic
AuthName "Protected Area"
AuthUserFile "_auth/.htpasswd"
Require valid-user
</directory>

<directory "/website2">
AuthType Basic
AuthName "Protected Area"
AuthUserFile "_auth/.htpasswd"
Require valid-user
</directory>

但它不工作

您不能在文件中使用<Directory>容器。.htaccess.htaccess文件本身本質上是一個目錄容器,目錄容器不能嵌套。)

假設您使用的是 Apache 2.4 並且/website1作為/website2請求的 URL 路徑的一部分出現,那麼您可以使用 Apache 表達式。

例如:

<If "%{REQUEST_URI} =~ m#^/(website1|website2)/#">
   AuthType Basic
   AuthName "Protected Area"
   AuthUserFile "_auth/.htpasswd"
   Require valid-user
</If>

請注意,文件路徑 _auth/.htpasswd被視為相對於定義的ServerRoot。您應該以其他方式指定絕對文件系統路徑,例如:

AuthUserFile "/abs/path/to/_auth/.htpasswd"

引用自:https://serverfault.com/questions/1001968