解决方案:我必须将允许/拒绝指令放在第一个目录指令中(也恰好是根指令)。我猜这是因为它有一个 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>
那应该行得通。我刚刚在我的服务器上验证了你的代码,以确保我没有发疯。你确定在这个优先的定义之前没有定义吗?
在服务器上的文件夹中创建一个测试文件。像 test.txt 这样的东西。当您在浏览器中加载该网址时,您可能会发现看不到它。如果是这种情况,那么您上面的定义将被跳过。
对于您想要做的,即只允许 127.0.0.1,您应该执行以下操作:
首先是
allow
事物,然后是deny
事物,然后deny
是不匹配的事物。你也不应该把你的
<Directory>
块放在你的块里面<VirtualHost>
,而是放在它之前。这是 Plesk 系统吗?有时您必须查看各种 http 包含是如何编译的。您可能在稍后的包含文件中有一些内容超出了您的第一个语句。
谢谢。此代码有效。
名称VirtualHost 127.0.0.1
名称VirtualHost 192.168.44.141