За последние 24 часа нас посетили 102304 программиста и 5656 роботов. Сейчас ищет 2371 программист ...

В теле php-страницы выдать errordocs/404.html, если неверные get-параметры

Тема в разделе "PHP для новичков", создана пользователем usr-php, 8 май 2019.

  1. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.907
    Симпатии:
    327
    @usr-php, для этого существуют переменные окружения и конфигурационные файлы. Нет ничего проще замастырить константу содержащую путь к странице ошибки в вайле конфигурации. А править конфиг при переносе - это святое дело. Но это лирика.
    А вообще я бы вам не советовал думать о переносе ЭТОГО куда либо. Учите MVC и роутеры для начала и станет понятно как отдавать 404-ю страницу.
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.860
    Симпатии:
    656
    Код (Text):
    1.         header("HTTP/1.0 404 Not Found");
    2.         header("HTTP/1.1 404 Not Found");
    Это не обычные заголовки, а такой способ установки статуса ответа. Выберите что-нибудь одно. Или положитесь в выборе версии на среду исполнения (см. http_response_code). Кстати, обычные однотипные заголовки по дефолту тоже совмещаются, т.е. если оставите только последний, ничего не потеряете.
     
  3. usr-php

    usr-php Новичок

    С нами с:
    8 май 2019
    Сообщения:
    23
    Симпатии:
    0
    В смысле правильно вот так:

    PHP:
    1.   if (!in_array($art, $artArray)) {
    2.         header("HTTP/1.1 404 Not Found");
    3.         header("Status: 404 Not Found");
    4.         readfile(dirname(__DIR__).'/errordocs/404.html');
    5.         die();
    6.     }
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.860
    Симпатии:
    656
    Как вариант. Status – это какая-то муть информационного характера. Тоже можно убрать.
    --- Добавлено ---
    Можете изучить ответ сервера, когда он исключительно сам выдает 404-ую, и сделать так же.
     
  5. usr-php

    usr-php Новичок

    С нами с:
    8 май 2019
    Сообщения:
    23
    Симпатии:
    0
    Скажите, пожалуйста, есть ли способ, который бы позволял как-то сообщить серверу, что по введенному адресу нет страницы, на что он сервер бы уже вернул errordocs/404.html?
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.860
    Симпатии:
    656
    Это нужно каскад из серверов городить или свой модуль писать. В этом нет необходимости, т.к. скрипт воссоздает это поведение несколькими строчками.
    --- Добавлено ---
    Если вас напрягает «двойственность» вывода 404-ой, я уже сказал, как нужно поступить: не перекладывать вывод на сервер, а наоборот все взять на себя (быть может, за редкими исключениями, не касающимися обычной практики).
     
  7. usr-php

    usr-php Новичок

    С нами с:
    8 май 2019
    Сообщения:
    23
    Симпатии:
    0
    Что Вы имеете ввиду под двойственностью вывода?
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.860
    Симпатии:
    656
    Вашу основную проблему, когда 404-ую могут выдавать и непосредственно сервер, и скрипт.