Сервер не может читать файл 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]
Решение
- перейдите в cPanel своего аккаунта GoDaddy
- открыть файловый менеджер
- перейдите в папку, в которой отображается ошибка 403
- в диспетчере файлов щелкните правой кнопкой мыши папку (в моем случае booking.mydomain.com)
- выберите Изменить разрешения
установите следующие флажки
a) user - read, write, execute
b) group - read, execute
c) world - read, execute
Permission code must display as 755
Нажмите изменить разрешения
Дело сделано!
Ответ 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
являются читаемыми по всему миру.