Мне кажется, что это довольно простое исправление, и я видел похожие проблемы при поиске, но не смог исправить их с помощью этих решений. В основном проблема в том, что я не могу получить доступ к подкаталогам на моем веб-сервере. Переход на 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