Apache拒绝指令不工作

解决scheme:我必须把允许/拒绝指令放在第一个目录指令(这也恰好是根目录)。 我猜这是因为它有一个AllowOverride None,不允许任何孩子指定允许/拒绝?

 <Directory />
    选项FollowSymLinks
     AllowOverride无
    订单允许,否认
    全部允许
        拒绝从xxx.xx.xxx.xx
 </目录>

原版的:

这个configuration仍然允许在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> 

这应该工作。 我只是在我的服务器上validation你的代码,以确保我不是疯了。 你确定在这个优先之前没有定义吗?

在服务器的文件夹中创build一个testing文件。 像test.txt。 您可能会发现,当您在浏览器中加载该url时,您看不到它。 如果是这样的话,那么上面的定义就会被跳过。

对于你想要做的,也就是只允许127.0.0.1,你应该这样做:

 Order Allow,Deny Allow from 127.0.0.1 

先说, allow事情,然后deny事情, deny不符合的事情。

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

这是一个Plesk系统吗? 有时你必须观察如何编译各种http包含。 在稍后的包含文件中,您可能会有一些内容超出了您的第一条语句。

谢谢。 这个代码的作品。

NameVirtualHost 127.0.0.1

NameVirtualHost 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>