Ошибка 403 при попытке получить доступ к веб-сайту
Apache/2.4.18 (Ubuntu)
Ubuntu 16.04
Вот мой файл 000-default.conf:
<VirtualHost *:80>
ServerAdmin myanme@myserver.net
ServerName myserver.net
DocumentRoot /home/utils/rails/public
<Directory /home/utils/rails/public>
AllowOverride all
Options -MultiViews
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>
Настройки файла для каталога /home/utils/rails/public установлены на 0755
Я получаю:
Forbidden
You don't have permission to access / on this server.
Это первый раз, когда я сталкиваюсь с этим. Есть идеи?
2 ответа
- Он уже исправил Директорию / в ответе * Ваше собственное решение - худший совет. Директива директории представляет директорию файловой системы. Что на самом деле решило вашу проблему, так это установив "AllowOverride none", в котором вероятный поддельный файл.htaccessсначала изменял ваши разрешения.
Установите директорию на вашем виртуальном хосте для вашего documentroot, и если вы являетесь администратором, не используйте.htaccess, так как, как вы можете видеть, если вы не совсем знаете, что делаете, это приведет к путанице и ошибкам, поэтому Реальный ответ таков: установите каталог для documentroot и установите allowoverride none, управляйте доступом внутри виртуального хоста, все в одном месте для легкой проверки.
<VirtualHost *:80>
ServerAdmin myanme@myserver.net
ServerName myserver.net
DocumentRoot "/home/utils/rails/public"
<Directory "/home/utils/rails/public">
AllowOverride None
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>
Если вам интересно, где<Directory />
принадлежит, он принадлежит в конфигурации сервера (или глобальной конфигурации, вне виртуального хоста) и должен быть установлен на Требовать все отказано. В противном случае вы фактически предоставляете доступ ко всей вашей файловой системе.
Я также удалил ваш IfModule для mod_negotation, поскольку отключение многовидовых изображений - это то же самое, что и отсутствие его, поэтому бессмысленное использование mod_negotiation Ifmodule для отключения многовидовых представлений.
Следующее решило проблему:
<VirtualHost *:80>
ServerAdmin myanme@myserver.net
ServerName myserver.net
DocumentRoot "/home/utils/rails/public"
<Directory "/home/utils/rails/public">
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
AllowOverride None
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>
Ключ:
Require all granted
Это используется начиная с Apache 2.4. Другие директивы не являются ключом к проблеме доступа, но у меня есть их, чтобы запретить директивы.htaccess ( ALlowOverride) и иметь дело с Multiviews
Установка разрешений на 0755 работает и менять не нужно
* Исправлена опечатка, когда путь к каталогу не копировался