我创建了一个虚拟主机,并尝试使用带有Require all denied
的目录指令禁止访问它。
<VirtualHost *:80>
DocumentRoot /var/www/test
<Directory /var/www/test/>
Require all denied
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
但是,用户仍然可以访问每个页面。我该如何解决这个问题?
答案 0 :(得分:3)
如果这些指令在虚拟主机中与当前请求不匹配,则不会执行任何操作。
您的VirtualHost没有ServerName,也没有ServerAlias,这是将VirtualHost用于请求的主要方法。
如果您认为忽略了配置,则步骤是验证此VirtualHost是否正在使用中。一种简单的方法是为虚拟主机定义唯一的日志文件。你的看起来并不独特。
apachectl -S will quickly summarize your virtual hosts.
答案 1 :(得分:0)
Require
不得与弃用的Order
,Allow
,Deny
指令结合使用(自Apache 2.4起)。
查看所有配置文件,并将订单/允许/拒绝替换为Require
,可能使用RequireAll
,RequireAny
,RequireNone
合并。
请注意,配置不一定位于保存<VirtualHost>
的单个文件中。您需要查看所有服务器配置文件。
例如。在Ubuntu上,这包括:
/etc/apache2/sites-enabled
/etc/apache2/conf-enabled
AllowOverride
设置,您可能需要查看从网络上可以访问的所有.htaccess
个文件