Мой .htaccess перенаправляет все запросы /word_here
на /page.php?name=word_here
. Затем сценарий PHP проверяет, находится ли запрашиваемая страница в своем массиве страниц.
Если нет, то как смоделировать ошибку 404? Я попробовал это, но это не привело к моей 404 страницы настраивался через ErrorDocument
в .htaccess
показ.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Правильно ли я считаю, что перенаправлять на страницу с ошибкой 404 неправильно?
Ответы:
Актуальный ответ (начиная с PHP 5.4 или новее) для создания страниц 404 должен использовать
http_response_code
:die()
не является строго необходимым, но гарантирует, что вы не продолжите нормальное выполнение.источник
То, что вы делаете, будет работать, и браузер получит код 404. Чего он не сделает, так это отобразит страницу «не найдено», которую вы могли ожидать, например:
не обнаружена
Запрошенный URL /test.php не найден на этом сервере.
Это потому, что веб-сервер не отправляет эту страницу, когда PHP возвращает код 404 (по крайней мере, Apache этого не делает). PHP отвечает за отправку всего собственного вывода. Поэтому, если вам нужна похожая страница, вам придется отправить HTML самостоятельно, например:
Вы можете настроить Apache для использования той же страницы для собственных сообщений 404, поместив это в httpd.conf:
источник
Попробуй это:
источник
Создавайте собственные страницы ошибок с помощью файла .htaccess
1. 404 - страница не найдена
2. 500 - внутренняя ошибка сервера
3. 403 - Запрещено
4. 400 - неверный запрос
5. 401 - Требуется авторизация
Вы также можете перенаправить все ошибки на одну страницу. лайк
источник
Вы не забыли умереть () после отправки заголовка? Заголовок 404 не останавливает обработку автоматически, поэтому может показаться, что он ничего не сделал, если происходит дальнейшая обработка.
ПЕРЕНАПРАВЛЕНИЕ на страницу 404 нехорошо, но вы можете ВКЛЮЧИТЬ содержимое с нее без проблем. Таким образом, у вас есть страница, которая правильно отправляет статус 404 с правильного URL-адреса, но также имеет ваш вопрос «что вы ищете?» страница для читателя-человека.
источник
попробуйте положить
в
.htaccess
файле.Сделайте это для любой ошибки, но замените ошибку 404.
источник
В Drupal или Wordpress CMS (и, вероятно, в других), если вы пытаетесь сделать так, чтобы некоторый пользовательский код php не существовал (если не выполняются некоторые условия), следующее работает хорошо, заставляя обработчик 404 CMS взять на себя:
источник
Сразу после этой строки попробуйте закрыть ответ, используя
exit
илиdie()
или
источник
ErrorDocument
, но с PHP.ErrorDocument
не имеет никакого эффекта после того, как вы уже ввели код PHP. этот ответ лучше всего объясняет путаницу, с которой я столкнулся 9 лет назад$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
в своем файле page.php. Coz есть сценарий, когда одна из этих страниц ожидает запроса «имя» от пользователя.попробуйте это один раз.
источник