需要Apache 2.2至2.4中的有效用户

需要Apache 2.2至2.4中的有效用户,apache,.htaccess,basic-authentication,Apache,.htaccess,Basic Authentication,我的.htaccess文件中有以下配置,它在Apache 2.2中工作,但在2.4中没有: SetEnvIf Request_URI ^/admin require_auth=true AuthUserFile /var/www/site.htpasswd AuthName "Admin Access" AuthType Basic Require all denied Satisfy any Require valid-user Allow from env=!requ

我的
.htaccess
文件中有以下配置,它在Apache 2.2中工作,但在2.4中没有:

SetEnvIf Request_URI ^/admin require_auth=true

AuthUserFile /var/www/site.htpasswd
AuthName "Admin Access"
AuthType Basic

Require all denied
Satisfy any
Require valid-user
Allow from env=!require_auth

如何将其转换为在Apache2.4中工作?基本上,如果URI以
/admin
开头,则应询问他们密码。

只需将此
.htaccess
文件放在要保护的文件夹中:

AuthUserFile /var/www/site/.htpasswd
AuthName "Admin Access"
AuthType Basic
require valid-user

例如,如果您希望保护目录/usr/local/apache/htdocs/secret,可以使用以下指令,或者放在文件/usr/local/apache/htdocs/secret/.htaccess中,或者放在节中的httpd.conf中

但是使用新的
If
指令,我们也可以从根目录执行此操作:

<If "'%{REQUEST_URI}' =~ m#/?admin(/.*)?#">
    AuthUserFile /var/www/site/.htpasswd
    AuthName "Admin Access"
    AuthType Basic
    require valid-user
</If>

AuthUserFile/var/www/site/.htpasswd
AuthName“管理员访问”
AuthType Basic
需要有效用户

我在带有Apache 2.4.27的Ubuntu16.04.03 LTS服务器上测试了这一点。

您必须使用.htpasswd文件的完整路径

我将向您展示获得此路径的最简单方法

在同一文件夹中创建一个.php文件,其中包含以下代码:

<?php
echo dirname(__FILE__) . '/.htpasswd';
?>


然后通过浏览器访问它,它将显示需要放入.htaccess文件的完整路径。

这不允许我根据当前配置基于URL应用它。而不仅仅是使用上面添加的If指令