- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Структура сайта такая:
/var/www/site/web
/var/www/site/src
В качестве единой точки входа используется файл index.php, который расположен в папке web.
Все остальные php файлы проекта расположены в src.
При обращении в браузере по любому адресу который заканчивается на .php (например httр://site.ru/src/config.php или httр://site.ru/sdvasdfasfdasdf.php), появляется ошибка "500 Internal Server Error nginx".
Как сделать так, чтобы вместо 500 отдавалась страница 404?
Мои настройки:
Спасибо!
Закройте вообще доступ к этим файлам из сети. Типа deny.
появляется ошибка "500 Internal Server Error nginx".
500 это ошибка сервера, может лучше найти и пофиксить ошибку чем мудрить с 404.
В error логе что пишется?
И если содержимое каталога src не участвует в работе сайта и не должно быть доступно по http, то лучше вынести этот каталог за пределы DOCUMENT_ROOT, уровнем выше.
И если содержимое каталога src не участвует в работе сайта и не должно быть доступно по http
Немного неправильная формулировка: полагаю, что содержимое каталога в работе сайта участвует, но php-файлы участвуют не по http, а инклудом. И там могут быть файлы стилей и жабаскрипта, которые, в отличие от .php, должны быть доступны по http.
500 это ошибка сервера, может лучше найти и пофиксить ошибку чем мудрить с 404.
В error логе что пишется?
Вот что в логах:
2018/05/11 08:17:20 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /src/config.php HTTP/2.0", host: "site.ru"
2018/05/11 08:18:49 [error] 5#5: *32 rewrite or internal redirection cycle while internally redirecting to "/404.php", client: 172.18.0.1, server: site.ru, request: "GET /sdvasdfasfdasdf.php HTTP/2.0", host: "site.ru"
И если содержимое каталога src не участвует в работе сайта и не должно быть доступно по http, то лучше вынести этот каталог за пределы DOCUMENT_ROOT, уровнем выше.
В файле web/index.php всего одна строка:
этот файл только принимает запрос от пользователя.
Все файлы проекта распологаются в src.
Небольшое дополнение!
Насколько я понял роблема была в этой строчке:
try_files $uri = /404.php;
Файла такого по адресу /var/www/site/www нет, поэтому происходит зацикливание.
Частично заработало после добавления следующей строки:
Однако появилась другая проблема:
При обращении к НЕсуществующему файлу, например httр://site.ru/sdvasdfasfdasdf.php, появляется моя страница 404 - как и положено.
Но при обращении к существующему файлу, например httр://site.ru/config.php запускается скрипт!
Как мне запретить прямой запуск php скриптов из браузера, расположенных в папке src ?
location /config.php {
return 404;
}
Для определенных файлов, если б вас файлы были в определенной папке можно было закрыть к дериктории
так
location /engine/ {
return 404;
}
Как мне запретить прямой запуск php скриптов из браузера, расположенных в папке src ?
"Чукча не читатель?"
Закройте вообще доступ к этим файлам из сети.
Добавил такой блок:
Последняя проблема которая осталась, это то что теперь при обращении по любому адресу, который оканчивается на .php появляется страница nginx об ошибке 404 "404 Not Found nginx" а мне бы хотелось чтобы отдавалась моя красивая страница.
Прописать try_files $uri = /src/404.php я не могу, т.к. будет появляться 403 Forbidden.
Замкнутый круг какой то получается.
Как вариант думаю положить рядом с index.php файл 404.php но мне кажется все должно быть намного проще. Сейчас конфиг выглядит так:
/src/404.php
А как насчёт /src/404.html? :) Или если php, то не /src, а в другом месте? Тут вроде как много вариантов.