CentOS 7.1 - Apache 2.4.6
Конфигурация по умолчанию содержит следующее:
....
<Directory />
AllowOverride none
Require all denied
</Directory>
...
DocumentRoot "/var/www/html"
Если я изменяю DocumentRoot, я получаю:
403 - У вас нет разрешения на доступ к / на этом сервере.
После нескольких часов четырехкратной проверки конфигурации Каталога и разрешений файловой системы я попытался удалить блок выше ... УСПЕХ! Все работает.
Все мои изменения заменяют раздел по умолчанию на:
DocumentRoot "/srv/http"
<Directory "/srv/http">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
Apache 2.2 использует следующую конфигурацию, чтобы объявить доступ к определённым директориям:
Order deny,allow
Deny from all
Apache 2.4 использует следующее:
Require all denied
Дополнительная информация здесь. Довольно странно, что вам удаётся заставить его работать с 1-ой конфигурацией, потому что это работает только на apache 2.2. Попробуйте выполнить следующее:
httpd -v
Он выведет используемую вами версию apache и возможно поможет вам прояснить некоторые вещи.
. Кажется, что в конфигурации Directory
для пути DocumentRoot
доступ должен быть указан следующим образом, чтобы он мог переопределить отказ верхнего уровня:
Require all granted
Думаю, мне еще многое нужно прочитать. согласно Apache Docs:
Директивы
Allow
Deny
иOrder
, предоставленныеmod_access_compat
, устарели и уйдут в будущей версии. Вам следует избегать используя их, и избегать устаревших учебников, рекомендующих их использование.