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

Разрешить подкаталог с Apache

Мне кажется, что это довольно простое исправление, и я видел похожие проблемы при поиске, но не смог исправить их с помощью этих решений. В основном проблема в том, что я не могу получить доступ к подкаталогам на моем веб-сервере. Переход на localhost вызывает штраф индекса. Но переход на localhost / test дает ошибку 403 Forbidden.

Я использую CentOS. Я пробовал отредактировать файл /etc/httpd/conf/httpd.conf несколькими способами, но безуспешно. DocumentRoot находится в / var / www / html. На данный момент у меня есть:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Я пробовал добавить следующее:

<Directory "/var/www/html/test">
    Order allow,deny
    Allow from all
</Directory>

Но это все еще дает мне 403 запрещенную ошибку.

Вам не нужно специально разрешать доступ к каталогу ниже того, который уже настроен в httpd.conf

Поскольку / var / www / html настроен с параметром «AllowOverride None», проблема не связана с файлом .htaccess, изменяющим права доступа.

Единственная оставшаяся причина заключается в том, что разрешения на файлы и каталоги не позволяют uid веб-сервера читать из этого каталога. Какие они есть и какими они должны быть, зависит от вашей модели безопасности. Но в качестве быстрого решения вы можете попробовать:

# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*

Если это решит проблему, найдите время, чтобы исправить права собственности и разрешения файлов на что-то более подходящее.

Обычно я рекомендую сначала взглянуть на http error_log, чтобы увидеть точную проблему.

При конфигурации по умолчанию вы должны иметь доступ к каталогу мастерской-5.4:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Если вы по-прежнему не можете получить доступ к каталогу, все указывает на разрешения каталога, в этом случае я предлагаю попробовать:

chown -R apache.apache /var/www/html  # Assuming apache as default User
chmod -R 755 /var/www/html            # Making sure all users can read and execute

На отдельном терминале выполните следующие команды:

apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log     # Assuming default error_log location

Попробуйте добавить простой html-файл, например (example.html):

<html>
<head><body>It works!</body></head>
</html>

Наконец, перезагрузите страницу, попробуйте загрузить example.html и посмотрите на вывод хвостик команда.

Прокомментируйте эти <Directory> директивы и просто установите DocumentRoot /var/www/html и chown -R apache:apache /var/www/html и перезапустить httpd.

В <Directory> директива должна использоваться для применения группы директив к определенному каталогу файловой системы (т. е. для изменения разрешений), поэтому вы обычно хотите использовать ее в <VirtualHost>.

В моем случае был включен SE Linux.

setenforce 0

отключить его (только для тестирования)

Еще один случай, в комментариях упоминается, что каталог был скопирован с файлами в нем.

Там может быть файл .htaccess с конфигурацией, вызывающей ошибку 403.

Файлы с именами, начинающимися с точки "." скрыты в Unix, чтобы показать, что они используют ls -a .

Документация здесь: https://httpd.apache.org/docs/current/howto/htaccess.html