Сервер не может читать файл htaccess, запрещающий доступ к безопасности

Я создал простое приложение, используя AngularJS. Когда я пытался разместить этот проект на своем веб-сайте http://demo.gaurabdahal.com/recipefinder, он показывает следующую ошибку:

Forbidden

У вас нет прав доступа к /recipefinder на этом сервере. Сервер не может прочитать файл htaccess, отказывая в доступе для обеспечения безопасности

Но если я перехожу на http://demo.gaurabdahal.com/, он отображает сообщение "Отказано в доступе", как и ожидалось, которое я напечатал. Но почему он не может открыть этот AngularJS проекты "recipefinder". Если я попытался поместить простое HTML-приложение, оно открывается просто отлично.

Тот же самый проект AngularJS прекрасно работает, когда я размещаю его в github (http://gaurabdahal.github.io/recipefinder)

Я не могу понять, что не так.

Ответы

Ответ 1

У меня тоже была эта проблема. Мой совет - посмотреть в файле журнала ошибок сервера. Для меня это было то, что верхний каталог для проекта был недоступен для чтения. В журнале ошибок это четко указано. Простой

sudo chmod -R 755 <site_top_folder>

исправил это для меня.

Ответ 2

Это распространенная проблема хостинга виртуальных серверов GoDaddy при открытии нового веб-сайта.

Предполагая, что у вас есть SSH-доступ к серверу (вы должны включить его на cPanel), войдите в свою учетную запись. После успешного входа в систему вы будете помещены в домашнюю директорию вашей учетной записи. DocumentRoot для вашего сайта находится в подкаталоге public_html. GoDaddy по умолчанию разрешений для этого каталога до 750, но эти разрешения не достаточны, чтобы позволить Apache для чтения файлов для веб-сайта. Вам необходимо изменить разрешения для этого каталога на 755 (chmod 755 public_html).

Скопируйте файлы для своего сайта в каталог public_html (scp и rsync работают для копирования файлов на сервер GoDaddy Linux).

Затем убедитесь, что все файлы в public_html доступны для чтения всем пользователям. Для этого используйте эту команду:

cd public_html
chmod -R o+r *

Если у вас есть другие подкаталоги (например, css, js и img), убедитесь, что они доступны для всех, разрешив как чтение, так и выполнение для общего доступа:

chmod o+rx css
chmod o+rx img
chmod o+rx js

И наконец, вам нужно иметь файл .htaccess в файле public_html. GoDaddy применяет правило, запрещающее загрузку сайта, если в вашем каталоге public_html нет файла .htaccess. Вы можете использовать vi для создания этого файла ("vi.htaccess"). Введите в файл следующие строки:

Order allow,deny
Allow from all
Require all granted

Этот конфиг будет работать как для Apache 2.2, так и для Apache 2.4. Сохраните файл (ZZ), а затем убедитесь, что у файла есть разрешения 644:

chmod 644 .htaccess

Работает как шарм.

Ответ 3

Установить группу вашего общего каталога никому.

Ответ 4

Вам нужно выполнить эти команды в /var/www/html/ или любом другом каталоге, в котором находится ваш проект:

sudo chgrp -R group ./
sudo chown -R user:group ./
find ./ -type d -exec chmod 755 -R {} \;
find ./ -type f -exec chmod 644 {} \;

В моем случае (веб-сервер apache) я использую www-data для user и group

Ответ 5

Решение для общего сервера GoDaddy

По сути, у меня возникла та же проблема при попытке развернуть отдельный проект Laravel на уровне поддоменов.

Файловая структура

- public_html (where the main web app resides)
    [works fine]

    - booking.mydomain.com (folder for separate Laravel project)
        [showing error 403 forbidden]

Решение

  1. перейдите в cPanel своего аккаунта GoDaddy
  2. открыть файловый менеджер
  3. перейдите в папку, в которой отображается ошибка 403
  4. в диспетчере файлов щелкните правой кнопкой мыши папку (в моем случае booking.mydomain.com)
  5. выберите Изменить разрешения
  6. установите следующие флажки

    a) user - read, write, execute
    b) group - read, execute
    c) world - read, execute
    
    Permission code must display as 755
    
  7. Нажмите изменить разрешения

Дело сделано!

Ответ 6

В моем случае apache был каким-то образом настроен неправильно, поэтому мне также нужно было установить разрешения для всех родительских дисков. Просто установка разрешения на .htaccess(и это родительский dir) не сработала.

Ответ 7

Просто мое решение. Я извлек файл, внес некоторые незначительные изменения и получил ошибку выше. Удалил все, загрузил и снова распаковал, и нормальный бизнес.

Ответ 8

Что касается Apache, работающего в Ubuntu, решением было проверить журнал ошибок, который показал, что ошибка связана с разрешением папок и файлов.

Сначала проверьте журнал ошибок Apache

nano /var/log/apache2/error.log

Затем установите разрешение на доступ к папке.

sudo chmod 755 /var/www/html/

Также установите разрешение на чтение файла.

sudo chmod 644 /var/www/html/.htaccess

Ответ 9

Важные моменты в моем опыте:

  • каждый ресурс, к которому обращается сервер, должен находиться в исполняемом и читаемом каталоге, следовательно xx5 в каждом chmod в других ответах.
  • в большинстве случаев веб-сервер (apache в моем случае) работает ни как пользователь, ни в группе, которая владеет каталогом, поэтому необходимо снова xx5 или chmod o+rx.

Но больший вывод, который я достиг, - это начало от маленького до более.

Например, если http://myserver.com/sites/all/resources/assets/css/bootstrap.css дает ошибку 403, смотрите, работает ли http://myserver.com/, затем sites, затем sites/all, затем sites/all/resources и т.д.

Это поможет, если ваш сервер имеет индексы каталогов:

  • В Apache: Options +Indexes

Эта инструкция может также находиться в папке .htaccess вашей веб-сервера public_html.

Ответ 10

"Сервер, неспособный прочитать файл htaccess" означает именно это. Убедитесь, что разрешения в вашем файле .htaccess являются читаемыми по всему миру.