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.
Я впервые сталкиваюсь с этим. Любые идеи?
Установите каталог на вашем виртуальном хосте на свой корневой каталог документов, и если вы являетесь администратором, не используйте .htaccess, поскольку, как вы можете видеть, если вы не совсем знаете, что делаете, это приведет вас к путанице и ошибкам, поэтому реальный ответ: установите каталог в корневой каталог документов и установите параметр 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, так как отключение мультиракурса - это то же самое, что его отсутствие, поэтому Ifmodule mod_negotiation для отключения мультиракурса не имеет смысла.
Следующее решило проблему:
<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 работает и не требует изменения
* Исправлена опечатка, при которой путь к каталогу не копировался