我正在寻找一种方法来强制Apache查找相对于DocumentRoot而不是ServerRoot的文件。现在,如果我创建.htaccess如下:
#Protect Directory
AuthName "Please provide valid username and password"
AuthType Basic
AuthUserFile .htpasswd
Require valid-user
Apache在以下位置查找.htpasswd:
/opt/homebrew/opt/httpd/.htpasswd
我想在以下几个方面寻找它:
/opt/homebrew/var/www/FOLDER/.htpasswd
.htaccess被放置在:
/opt/homebrew/var/www/FOLDER/.htaccess
我不想更改ServerRoot并移动所有配置。
1条答案
按热度按时间jfewjypa1#
你不能改变这种行为。根据
AuthUserFile
指令的Apache文档,AuthUserFile
指令的 file-path 必须是:OR,
ServerRoot
的文件路径 relative。但是,分配相对于文档根的路径也会违反安全建议,该建议特别指出:
确保AuthUserFile存储在Web服务器的文档树之外。不要将其放在它所保护的目录中。否则,客户端可能能够下载AuthUserFile。
在您的示例(
AuthUserFile .htpasswd
)中,看起来您希望它相对于包含.htaccess
文件的目录,而不仅仅是文档根目录?如果你需要在不同的服务器上提供不同的服务,那么你可以使用
<If>
表达式(或其他条件)来根据请求或服务器的元素有条件地设置AuthUserFile
。也可以使用 defined 变量。举例来说:
在
.htaccess
中: