У меня есть сервер Apache, обслуживающий несколько доменов (виртуальных хостов). Внутри одного из них я хочу, чтобы виртуальный каталог был доступен только из локальной сети:

<VirtualHost *:80>  
  DocumentRoot "some_dir"  
  ServerName www.something.com  

  Alias /restricted "someotherdir_somewherelse"  
  <Location /restricted>  
    Order deny,allow  
    Deny from all  
    Allow from 192.168.1.*  
  </Location>  

</VirtualHost>

Проблема в том, что никто не может получить доступ к каталогу. Это всегда отвергается.

Если я удалю директиву « Запретить», то локальные компьютеры действительно смогут получить доступ к ограниченному местоположению, но также и посторонним. Я немного запутался с документацией Apache о директиве Order :

Запретить, Разрешить

Сначала оцениваются все директивы Deny; в случае совпадения запрос отклоняется, если он также не соответствует директиве Allow. Любые запросы, которые не соответствуют никаким директивам Allow или Deny, разрешены.

Кажется, что после того, как директива Deny оценена, Allow - нет. Я тестирую с 192.168.1.60 и 192.168.1.23.

Apache 2.2 работает под управлением Windows 2008.

1 ответ1

3

Вы предполагаете, что allow from разрешает звездочку в качестве некоторого подстановочного знака, но это не то, как все задокументировано. Вместо этого используйте частичный адрес:

Allow from 192.168.1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .