Здравствуйте! Есть сайт на самописном движке. Проблема в том, что нет страницы 404, т.е. какую-бы лабуду не написать в адресной строке, открывается пустая страница с шапкой и сайдбаром... Сервис https://bertal.ru показывает: HTTP/1.1 200 OK Server: nginx Date: Sun, 30 Sep 2018 05:39:34 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Cache-Control: max-age=43200 Expires: Sun, 30 Sep 2018 17:39:34 GMT Можно ли как-то без особых заморочек, заставить сайт выдавать 404 ошибку?
@igorsrt, что это за движок, который даже 404 не умеет делать. Наверное из нескольких строк. Потому что уже 100 строк для этого вполне достаточно. Как выше написали, выдавать нужный статус не трудно, например: PHP: function error($s=500) { // всякого рода сброс // для подготовки выдачи 404-ой http_response_code($s); // подключение шаблона 404-ой // или readfile статика // exit; } --- Добавлено --- Не, это довольно популярный сервис для просмотра заголовков и т.п. --- Добавлено --- Впрочем ТС сразу написал, что это сервис.
Так нужно еще браузер использовать? Ты про него ничего не писал В браузере я могу и упомянутый ТСом сервис использовать, причем в любом
да вроде нет, там куча всяких файлов, хотя не знаю конечно )... старый сайт. насколько я слышал, лет 10 назад каждая веб-студия считала своим долгом написать собственную CMS что бы быть еще круче... )) я просто думал, может будет достаточно вставить какую-нибудь дополнительную функцию (например в файл index.php), которая решит проблемы с несуществующими страницами
У серьезных студий с этим все по-прежнему. Еще раз. Оно там по идее и так должно быть. Либо это кто-то умышленно поломал, например убрав вызов httр_response_code из обработчика ошибки (вроде ф-ции error, кот. я показал выше), либо движок – полный отстой. Как вы им прежде пользовались, не обращая внимание на такую важную вещь? --- Добавлено --- Поищите по тексту имя ф-ции вроде error, Error404 и т.п.
[QUOTE="miketomlin, post: 582692, member: 60901" Еще раз. Оно там по идее и так должно быть. Либо это кто-то умышленно поломал, например убрав вызов httр_response_code из обработчика ошибки (вроде ф-ции error, кот. я показал выше), либо движок – полный отстой. Как вы им прежде пользовались, не обращая внимание на такую важную вещь? --- Добавлено --- Поищите по тексту имя ф-ции вроде error, Error404 и т.п.[/QUOTE] ...я им раньше не пользовался - попросили поправить по мелочи (html, css).. и вот еще для полного счастья "вебмастере пишет что 404 ошибка некорректно настроена" )) как раньше было не знаю, но файла типа 404.php там точно нет - значит вероятно и не предполагалось
Если вы отвечаете за «html, css», пусть «вебмастер» сам разбирается. Или речь шла про сообщение в панели «вебмастера»? --- Добавлено --- Если «не предполагалось», меняйте движок. Сайт большой? Админка у него есть?
да, речь шла про сообщения в панели вебмастера... сайт большой, старый, с админкой и базой MySQL, довольно хитроумно сделанный (так просто на другую CMS не перенесешь)... а тех вебмастеров, которые его делали уже не найти )))
Возможно, получится только фронт заменить. Ну или нужно копаться в том, что есть. --- Добавлено --- Сайт размещен где-нибудь в паблике?
Это не оч. большой. В принципе фронт можно натянуть даже на G-Drive, несмотря на то, что у него автоматом поддерживаются только двухуровневые адреса. Можно не делать особых различий между art и art/100500, т.к. по структуре подобные страницы не сильно отличаются друг от друга. Хотя можно и различать, если список в узле art должен формироваться программно, – это не сложно. У вас есть хотя бы небольшой опыт программирования на PHP?
очень небольшой... (( мне бы конечно лучше просто ответ сервера "починить" и забыть про этот чудо-сайт
@igorsrt ищешь файл index.php в нем ищешь if() {} elseif() {} elseif() {} else { http_response_code(404); } или switch case default: http_response_code(404); + 404 в маршрутах если данные не найдены --- Добавлено --- http://www.plan-72.ru/
нет там такого... index.php: PHP: <? error_reporting(0); ini_set("display_errors", 0); if ($_GET["get"] == "success.php") {require_once("success.php"); exit;} if ($_GET["get"] == "result.php") {require_once("result.php"); exit;} if ($_GET["get"] == "error.php") {require_once("error.php"); exit;} if (!isset($_GET["get"])) $args = "bp"; else $args = $_GET["get"]; $args = explode("/", $args); if (!isset($args[0])) {$args[0] = "bp";} if (!isset($args[1])) {$args[1] = "";} if (!isset($args[2])) {$args[2] = "";} if (!isset($args[3])) {$args[3] = "";} require_once("lib/Smarty/Smarty.class.php"); $smarty = new Smarty(); $smarty->addTemplateDir("modules/"); $smarty->setCompileDir("var/templates_c"); define("MOD", $args[0]); $smarty->assign("mod", MOD); define("CAT", $args[1]); $smarty->assign("cat", CAT); define("ID", $args[2]); $smarty->assign("id", ID); define("SKIP", $args[3]); $smarty->assign("skip", SKIP); require_once("config.php"); connect(); require_once("lib/lib_functions.php"); //»нит переменных смарти дл¤ шапки сайта $smarty->assign("title", title(CAT, ID)); $meta_description = mysql_fetch_array(mysql_query("select * from `META` where `NAME`='description'")); $smarty->assign("meta_description", $meta_description['CONTENT']); $meta_keywords = mysql_fetch_array(mysql_query("select * from `META` where `NAME`='keywords'")); $smarty->assign("meta_keywords", $meta_keywords['CONTENT']); $tel = mysql_fetch_array(mysql_query("select * from `VARS` where `NAME`='tel'")); $smarty->assign("tel", $tel["VALUE"]); $email = mysql_fetch_array(mysql_query("select * from `VARS` where `NAME`='email'")); $smarty->assign("email", $email["VALUE"]); $smarty->assign("breadcrumbs", breadcrumbs()); $smarty->assign("html_description", html_description(CAT, ID)); if (in_array(CAT, array("contacts", "print", "reviews", "costs", "warranty")) or CAT == "") { $smarty->addTemplateDir("modules/info/"); include_once("modules/info/info.php"); } elseif (intval(CAT) > 0) { $smarty->addTemplateDir("modules/works/"); include_once("modules/works/works.php"); } else { $smarty->addTemplateDir("modules/".CAT."/"); include_once("modules/".CAT."/".CAT.".php"); } /*$smarty->template_dir = "modules/"; $smarty->display("header.tpl"); exit; include_once('header.php');*/ /*include_once('content.php'); include_once('footer.php');*/ ?>
Тогда «копайтесь», как выше написал. Дело в том, что это не так просто починить, как вам может показаться, т.к. затрагивает основу движка. А если в основе это не предусмотрено, то вообще ХЗ. Обработчик 404-ой может понадобиться дергать из разных мест, а не только при первичном роутинге. --- Добавлено --- @nospiou, да, судя по закомментированным фрагментам, морда когда-то сдиралась с WP.
Ну это индекс шаблонизатора https://www.smarty.net/docsv2/ru/what.is.smarty.tpl А движок где то в другом месте --- Добавлено --- https://www.smarty.net/forums/viewtopic.php?p=47472
попробуй так.. а вдруг... PHP: if ($_GET["get"] == "error.php") {header('HTTP/1.0 404 Not Found'); require_once("error.php"); exit;}