Apache 拒绝指令不起作用

Apache 拒绝指令不起作用

解决方案:我必须将允许/拒绝指令放在第一个 Directory 指令内(该指令也恰好用于根目录)。我猜是因为它有一个 AllowOverride None,不允许任何子级指定允许/拒绝?

<目录 />
    选项 FollowSymLinks
    AllowOverride 无
    命令允许、拒绝
    允许所有人
        拒绝来自 xxx.xx.xxx.xx
</目录>

原来的:

此配置在 apache 重启后仍然允许访问所有 IP

<VirtualHost *:80>

    ServerName  www.xxx.com

    DocumentRoot  /var/www/vhosts/xxx

    <Directory /var/www/vhosts/xxx>
        Options Indexes FollowSymLinks
        AllowOverride none
        Order deny,allow
        Deny from all                     
        Allow from 127.0.0.1
    </Directory>
</VirtualHost>

答案1

这应该可行。我刚刚在我的服务器上验证了你的代码,以确保我没有发疯。你确定你没有在这个定义之前有一个优先的定义吗?

在服务器上的文件夹中创建一个测试文件。类似于 test.txt。您可能会发现在浏览器中加载该 URL 时看不到它。如果是这种情况,则上面的定义将被跳过。

答案2

对于您想要执行的操作,即仅允许 127.0.0.1,您应该执行以下操作:

Order Allow,Deny
Allow from 127.0.0.1

首先说的是allow事物,然后deny是事物,以及deny不匹配的事物。

你也不应该把你的<Directory>块放在你的<VirtualHost>块里面,而是放在它前面。

答案3

这是 Plesk 系统吗?有时您必须观察各种 http 包含内容的编译方式。后面的包含文件中可能会有某些内容覆盖您的第一个语句。

答案4

谢谢。这个代码有效。

名称虚拟主机 127.0.0.1

名称虚拟主机 192.168.44.141

<VirtualHost 127.0.0.1 192.168.44.141>

#ServerName localhost.com
    ServerName www.localhost.com
DocumentRoot  "E:/abcd"
<Directory "E:/abcd/files">
    Options Indexes FollowSymLinks
        AllowOverride none
    Order allow,deny
    Allow from 192.168.44.128
    Deny from all

  </Directory>
 </VirtualHost>

相关内容