Назад | Перейти на главную страницу

Apache: Могу ли я запретить доступ к каталогу, кроме как через виртуальный хост?

Если предположить, что у меня есть сервер с именем machinename.ip который решает http://machinename.ip по умолчанию root (/var/www/html), и разрешает http://www.example.com через файл vhosts www.example.com к /var/www/html/example

Есть ли простой способ запретить доступ к /var/www/html/example папка (и любые подкаталоги / файлы) Кроме через www.example.com vhost? т.е. когда через определенный URL-адрес vhost добавлен, вы можете получить к ним доступ, так что www.example.com идет в /var/www/html/example но http://machinename.ip/example или любая другая комбинация не приведет вас ни туда, ни в какие поддиректории?

Например для файла /var/www/html/example/myfile.php

http://www.example.com/myfile.php *yay works*

но

http://machinename.ip/example/myfile.php *does not*

вы можете сделать это так: в httpd.conf

<Directory "/var/www/html">
  Deny from all
</Directory>

затем где-то внутри vhosts.conf файл добавить немного <Directory разметка (вот так)

<VirtualHost...{blah}
  # | ADD THIS
  # v
  <Directory "/var/www/html/example">
     AllowOverride None
     Order allow,deny
     Allow from all
  </Directory>
  # ^
  # | ADD THIS
  {...blah near where you may have something like...}
  DocumentRoot /var/www/html/example
  ServerAlias example.com
</VirtualHost>

вам нужно будет сделать эти блоки для ВСЕХ ваших хостов, но если вы готовы смириться с этим, это сработает

Конечно, ты можешь это сделать. Большинство веб-серверов, с которыми я работаю, имеют хост по умолчанию, указывающий на /var/www/default/ и все домены отправляются на /var/www/[domain], например example.com Я сидел /var/www/example.com/.

Конфигурация Apache по умолчанию не такая, но обычно вы можете преодолеть это, mkdir -p /var/www/default и адаптируем каталог, на который указывает конфигурация по умолчанию.