Intereting Posts
Как отобразить сетку с текстом, подобным Pinterest? Странное эхо, поведение печати в PHP? Ключи Laravel Array не сохранены cURL по локальной сети с проблемой виртуального хоста Префикс метода подчеркивания PHP Неустранимая ошибка: вызов функции-члена fetch_array () в boolean laravel 5.1 говорит для всех других маршрутов, что кроме ('/'), что 404 страница не найдена на онлайн-сервере Amazon с использованием ec2 Выравнивание ключей массива PHP Должен ли я использовать подготовленные инструкции для MySQL в PHP PERFORMANCE-WISE? php для получения всех понедельников в диапазоне дат Прокси AJAX с PHP, возможно ли это? php artisan migrate throwing Не удалось найти драйвер – Использование Laravel Вызовите веб-службу asp.net с PHP с несколькими параметрами Как совместить символы с акцентом в preg_match ()? Как заставить PHP использовать libiconv версию iconv вместо установленной версии CentOS, установленной на CentOS?

Как создать ошибку 404 в PHP?

Мой .htaccess перенаправляет все запросы в /word_here на /page.php?name=word_here . Затем скрипт PHP проверяет, находится ли запрашиваемая страница в своем массиве страниц.

Если нет, то как я могу имитировать ошибку 404? Я пробовал это, но это не сработало:

 header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 

Правильно ли я считаю, что неправильно перенаправлять мою страницу с ошибкой 404?

Обновленный ответ ( http_response_code с PHP 5.4) для генерации 404 страниц в PHP – это использование http_response_code :

 <?php http_response_code(404); include('my_404.php'); // provide your own HTML for the error page die(); в <?php http_response_code(404); include('my_404.php'); // provide your own HTML for the error page die(); 

die() не является строго необходимым, но он гарантирует, что вы не продолжите нормальное выполнение.

То, что вы делаете, будет работать, и браузер получит код 404. То, что он не сделает, – это отобразить страницу «не найден», которую вы ожидаете, например:

не обнаружена

Запрошенный URL /test.php не найден на этом сервере.

Это связано с тем, что веб-сервер не отправляет эту страницу, когда PHP возвращает код 404 (по крайней мере, Apache). PHP отвечает за отправку всего собственного вывода. Поэтому, если вам нужна подобная страница, вам нужно будет отправить HTML самостоятельно, например:

 <?php header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); include("notFound.php"); ?> в <?php header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); include("notFound.php"); ?> 

Вы можете настроить Apache на использование одной и той же страницы для своих 404 сообщений, поставив это в httpd.conf:

 ErrorDocument 404 /notFound.php 

Попробуй это:

 <?php header("HTTP/1.0 404 Not Found"); ?> 

Создавать собственные страницы ошибок через файл .htaccess

1. 404 – страница не найдена

  RewriteEngine On ErrorDocument 404 /404.html 

2. 500 – Внутренняя ошибка сервера

 RewriteEngine On ErrorDocument 500 /500.html 

3. 403 – Запрещено

 RewriteEngine On ErrorDocument 403 /403.html 

4. 400 – Плохой запрос

 RewriteEngine On ErrorDocument 400 /400.html 

5. 401 – Требуется авторизация

 RewriteEngine On ErrorDocument 401 /401.html 

Вы также можете перенаправить всю ошибку на одну страницу. как

 RewriteEngine On ErrorDocument 404 /404.html ErrorDocument 500 /404.html ErrorDocument 403 /404.html ErrorDocument 400 /404.html ErrorDocument 401 /401.html 

Вы помните, чтобы умереть () после отправки заголовка? Заголовок 404 автоматически не прекращает обработку, поэтому может показаться, что ничего не произошло, если происходит дальнейшая обработка.

Неправильно REDIRECT на вашу страницу 404, но вы можете ВКЛЮЧАТЬ контент от него без проблем. Таким образом, у вас есть страница, которая правильно отправляет статус 404 с правильного URL-адреса, но у вас также есть «что вы ищете?». страница для читателя.