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

Получение ошибки 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.

Я впервые сталкиваюсь с этим. Любые идеи?

  • он уже исправил Directory / в ответе * Ваше собственное решение - худший совет из возможных. Директива Directory представляет каталог файловой системы. Что на самом деле решило вашу проблему, так это установка "AllowOverride нет"в котором, вероятно, сначала ваши разрешения менял фальшивый файл .htaccess.

Установите каталог на вашем виртуальном хосте на свой корневой каталог документов, и если вы являетесь администратором, не используйте .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 работает и не требует изменения

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