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:
В
Allow
Deny
, иOrder
директивы, предоставленныеmod_access_compat
, устарели и исчезнут в будущей версии. Вам следует избегать их использования и избегать устаревших руководств, рекомендующих их использование.