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

Предполагается, что директива Apache Directory относится к DocumentRoot или нет?

Это апач Directory директива должна относиться к DocumentRoot или нет? Я спрашиваю в контексте VirtualHost, но это не должно иметь никакого значения.

Другими словами, это должно быть:

<VirtualHost>
    DocumentRoot /var/www
    <Directory /var/www>
    ...

или

<VirtualHost>
    DocumentRoot /var/www
    <Directory />
    ...

Оба работают. В Apache Каталог документы сказать:

Путь к каталогу - это либо полный путь к каталогу, либо строка с подстановочными знаками ...

... но затем они показывают два примера, противоречащих утверждению «полный путь».

ED: Также есть противоречивые примеры на Страница настройки производительности Apache в FollowSymLinks и SymLinksIfOwnerMatch и AllowOverride разделы.

Ради интереса я посмотрел на настройку виртуального хоста Debian по умолчанию и обнаружил следующее:

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ...

Документация верна, и <Directory> директива должна быть полный дорожка.

Ваш первый пример заключается в том, как вы должны настроить директиву для VirtualHosts и применить параметры в директиве только к DocumentRoot. Ваш второй пример относится к корню файловой системы (буквально /).

Вы не опубликовали остальную часть директивы, но это обычно используется как способ попытаться заключить Apache в тюрьму и ограничить его доступ, и обычно (но не всегда) помещается внутри основного apache2.conf или httpd.conf файлы конфигурации, при этом ваши VirtualHosts явно разрешают доступ для своих DocumentRoot каталоги, поэтому они часто используются вместе.

Из Документация Apache:

Обратите внимание, что доступ по умолчанию для <Directory /> - это разрешить любой доступ. Это означает, что Apache httpd будет обслуживать любой файл, сопоставленный с URL-адресом. Рекомендуется изменить это с помощью такого блока, как:

    <Directory />
      Require all denied
    </Directory>
а затем переопределите это для каталогов, которые вы хотите открыть. Увидеть Советы по безопасности страницу для более подробной информации.