За последние 24 часа нас посетили 32840 программистов и 1819 роботов. Сейчас ищут 884 программиста ...

Ответ сервера 200 вместо 404

Тема в разделе "PHP для новичков", создана пользователем igorsrt, 30 сен 2018.

  1. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    Здравствуйте!
    Есть сайт на самописном движке. Проблема в том, что нет страницы 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 ошибку?
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  3. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Я думал это твой сайт.
    Отправить в хедере 404
    PHP:
    1. http_response_code(404);
    Остальное к гадалкам
     
    MouseZver нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @igorsrt, что это за движок, который даже 404 не умеет делать. Наверное из нескольких строк. Потому что уже 100 строк для этого вполне достаточно. Как выше написали, выдавать нужный статус не трудно, например:
    PHP:
    1. function error($s=500)
    2. {
    3.     // всякого рода сброс
    4.     // для подготовки выдачи 404-ой
    5.     http_response_code($s);
    6.     // подключение шаблона 404-ой
    7.     // или readfile статика
    8.     // exit;
    9. }
    --- Добавлено ---
    Не, это довольно популярный сервис для просмотра заголовков и т.п. ;)
    --- Добавлено ---
    Впрочем ТС сразу написал, что это сервис.
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Довольно популярный сервис открывается сочетанием клавиш а в винде всего одной f12:)
     
    Fell-x27 нравится это.
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @nospiou, это не отменяет написанное мной.

    Странно, у меня «винда». Нажал F12 – ничего не произошло :)
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Так нужно еще браузер использовать? :) Ты про него ничего не писал ;) В браузере я могу и упомянутый ТСом сервис использовать, причем в любом :)
     
  10. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    да вроде нет, там куча всяких файлов, хотя не знаю конечно )... старый сайт. насколько я слышал, лет 10 назад каждая веб-студия считала своим долгом написать собственную CMS что бы быть еще круче... ))
    я просто думал, может будет достаточно вставить какую-нибудь дополнительную функцию (например в файл index.php), которая решит проблемы с несуществующими страницами
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    У серьезных студий с этим все по-прежнему.

    Еще раз. Оно там по идее и так должно быть. Либо это кто-то умышленно поломал, например убрав вызов httр_response_code из обработчика ошибки (вроде ф-ции error, кот. я показал выше), либо движок – полный отстой. Как вы им прежде пользовались, не обращая внимание на такую важную вещь?
    --- Добавлено ---
    Поищите по тексту имя ф-ции вроде error, Error404 и т.п.
     
  12. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    [QUOTE="miketomlin, post: 582692, member: 60901"
    Еще раз. Оно там по идее и так должно быть. Либо это кто-то умышленно поломал, например убрав вызов httр_response_code из обработчика ошибки (вроде ф-ции error, кот. я показал выше), либо движок – полный отстой. Как вы им прежде пользовались, не обращая внимание на такую важную вещь?
    --- Добавлено ---
    Поищите по тексту имя ф-ции вроде error, Error404 и т.п.[/QUOTE]
    ...я им раньше не пользовался - попросили поправить по мелочи (html, css).. и вот еще для полного счастья "вебмастере пишет что 404 ошибка некорректно настроена" )) как раньше было не знаю, но файла типа 404.php там точно нет - значит вероятно и не предполагалось
     
  13. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Если вы отвечаете за «html, css», пусть «вебмастер» сам разбирается. Или речь шла про сообщение в панели «вебмастера»?
    --- Добавлено ---
    Если «не предполагалось», меняйте движок. Сайт большой? Админка у него есть?
     
  14. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    да, речь шла про сообщения в панели вебмастера... сайт большой, старый, с админкой и базой MySQL, довольно хитроумно сделанный (так просто на другую CMS не перенесешь)... а тех вебмастеров, которые его делали уже не найти )))
     
  15. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Возможно, получится только фронт заменить. Ну или нужно копаться в том, что есть.
    --- Добавлено ---
    Сайт размещен где-нибудь в паблике?
     
  16. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
  17. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Это не оч. большой. В принципе фронт можно натянуть даже на G-Drive, несмотря на то, что у него автоматом поддерживаются только двухуровневые адреса. Можно не делать особых различий между art и art/100500, т.к. по структуре подобные страницы не сильно отличаются друг от друга. Хотя можно и различать, если список в узле art должен формироваться программно, – это не сложно.

    У вас есть хотя бы небольшой опыт программирования на PHP?
     
  18. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    очень небольшой... (( мне бы конечно лучше просто ответ сервера "починить" и забыть про этот чудо-сайт ;)
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @igorsrt ищешь файл index.php в нем ищешь
    if() {} elseif() {} elseif() {} else { http_response_code(404); }
    или
    switch case default: http_response_code(404);
    + 404 в маршрутах если данные не найдены
    --- Добавлено ---
    http://www.plan-72.ru/
    Screen Shot 2018-10-01 at 13.18.39.png
     
  20. igorsrt

    igorsrt Активный пользователь

    С нами с:
    17 сен 2015
    Сообщения:
    65
    Симпатии:
    1
    нет там такого...
    index.php:
    PHP:
    1. <?
    2.  
    3. error_reporting(0); ini_set("display_errors", 0);
    4.  
    5. if ($_GET["get"] == "success.php") {require_once("success.php"); exit;}
    6. if ($_GET["get"] == "result.php") {require_once("result.php"); exit;}
    7. if ($_GET["get"] == "error.php") {require_once("error.php"); exit;}
    8.  
    9. if (!isset($_GET["get"])) $args = "bp";
    10. else $args = $_GET["get"];
    11. $args = explode("/", $args);
    12. if (!isset($args[0])) {$args[0] = "bp";}
    13. if (!isset($args[1])) {$args[1] = "";}
    14. if (!isset($args[2])) {$args[2] = "";}
    15. if (!isset($args[3])) {$args[3] = "";}
    16.  
    17. require_once("lib/Smarty/Smarty.class.php");
    18. $smarty = new Smarty();
    19. $smarty->addTemplateDir("modules/");
    20. $smarty->setCompileDir("var/templates_c");
    21.  
    22. define("MOD", $args[0]);
    23. $smarty->assign("mod", MOD);
    24. define("CAT", $args[1]);
    25. $smarty->assign("cat", CAT);
    26. define("ID", $args[2]);
    27. $smarty->assign("id", ID);
    28. define("SKIP", $args[3]);
    29. $smarty->assign("skip", SKIP);
    30.  
    31. require_once("config.php");
    32. connect();
    33.  
    34. require_once("lib/lib_functions.php");
    35.  
    36. //»нит переменных смарти дл¤ шапки сайта
    37. $smarty->assign("title", title(CAT, ID));
    38. $meta_description = mysql_fetch_array(mysql_query("select * from `META` where `NAME`='description'"));
    39. $smarty->assign("meta_description", $meta_description['CONTENT']);
    40. $meta_keywords = mysql_fetch_array(mysql_query("select * from `META` where `NAME`='keywords'"));
    41. $smarty->assign("meta_keywords", $meta_keywords['CONTENT']);
    42. $tel = mysql_fetch_array(mysql_query("select * from `VARS` where `NAME`='tel'"));
    43. $smarty->assign("tel", $tel["VALUE"]);
    44. $email = mysql_fetch_array(mysql_query("select * from `VARS` where `NAME`='email'"));
    45. $smarty->assign("email", $email["VALUE"]);
    46. $smarty->assign("breadcrumbs", breadcrumbs());
    47. $smarty->assign("html_description", html_description(CAT, ID));
    48. if (in_array(CAT, array("contacts", "print", "reviews", "costs", "warranty")) or CAT == "") {
    49.     $smarty->addTemplateDir("modules/info/");
    50.     include_once("modules/info/info.php");
    51. }
    52. elseif (intval(CAT) > 0) {
    53.     $smarty->addTemplateDir("modules/works/");
    54.     include_once("modules/works/works.php");
    55. }
    56. else {
    57.     $smarty->addTemplateDir("modules/".CAT."/");
    58.     include_once("modules/".CAT."/".CAT.".php");
    59. }
    60.  
    61. /*$smarty->template_dir = "modules/";
    62. $smarty->display("header.tpl"); exit;
    63. include_once('header.php');*/
    64. /*include_once('content.php');
    65. include_once('footer.php');*/
    66. ?>
     
  21. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Вообще какой то странный сайт везде какие то признаки использования
    Screen Shot 2018-10-01 at 13.26.41.png
     
  22. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Тогда «копайтесь», как выше написал. Дело в том, что это не так просто починить, как вам может показаться, т.к. затрагивает основу движка. А если в основе это не предусмотрено, то вообще ХЗ. Обработчик 404-ой может понадобиться дергать из разных мест, а не только при первичном роутинге.
    --- Добавлено ---
    @nospiou, да, судя по закомментированным фрагментам, морда когда-то сдиралась с WP.
     
  23. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  24. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @nospiou, походу это сборная солянка.

    Смарти прикрутили, а мозги похоже нет :)
     
  25. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    попробуй так.. а вдруг...
    PHP:
    1. if ($_GET["get"] == "error.php") {header('HTTP/1.0 404 Not Found'); require_once("error.php"); exit;}