Ошибка 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 работает и менять не нужно

* Исправлена ​​опечатка, когда путь к каталогу не копировался

Другие вопросы по тегам