需要有效的用户apache 2.2到2.4

时间:2017-10-01 18:59:18

标签: 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=!require_auth

如何将其转换为在apache 2.4中工作?基本上,如果URI以/ admin开头,那么应该要求他们输入密码。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

来自https://httpd.apache.org/docs/2.4/howto/auth.html

  

例如,如果您希望保护目录/ 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>

我在使用Apache 2.4.27的Ubuntu 16.04.03 LTS服务器上测试了这个正面

答案 1 :(得分:1)

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

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

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

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

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