Решение: я должен поместить директивы allow / deny в первую директиву Directory (которая также относится к корню). Я предполагаю, что это потому, что у него есть AllowOverride None, который не позволяет детям указывать разрешение / запрет?
<Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all Deny from xxx.xx.xxx.xx </Directory>
Оригинал:
Эта конфигурация по-прежнему разрешает доступ ко всем IP-адресам после перезапуска apache.
<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. Вы можете обнаружить, что не видите его, когда загружаете этот URL-адрес в свой браузер. В этом случае ваше определение выше пропускается.
Для того, что вы хотите сделать, то есть разрешить только 127.0.0.1, вы должны сделать следующее:
Order Allow,Deny
Allow from 127.0.0.1
Что сначала говорит: allow
вещи, тогда deny
вещи, и deny
вещи, которые не совпадают.
Также не следует ставить <Directory>
блок внутри вашего <VirtualHost>
один, но до него.
Это система Plesk? Иногда вам нужно наблюдать, как компилируются различные HTTP-включения. У вас может быть что-то в более позднем включаемом файле, которое перекрывает ваш первый оператор.
Спасибо. этот код работает.
ИмяVirtualHost 127.0.0.1
ИмяVirtualHost 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>