我的.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开头,那么应该要求他们输入密码。
谢谢!
答案 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 文件的完整路径。