2015-10-02 3 views
3

Так в настоящее время, когда пользователь загружает страницу, которая не существует, или что-то пойдет не так - перенаправить пользователей на страницу 404 с помощью header в PHP:Правильный способ отображения 404 страницы в PHP?

header('Location: www.website.com/404'); //This is simplified intentionally 

На этой странице отображается 404 значок с обратной ссылкой на домашнюю страницу и некоторую другую информацию

Недавно в инструментах Google для веб-мастеров я получил несколько сообщений, что я не возвращаю 404 страницы правильно.

Должен ли я возвращать http_response_code при отображении страницы 404? Или я должен обрабатывать 404 по-разному?

+2

не делаем это. перенаправление отправляет браузер на новую страницу, после чего получает ответ «200 OK». Вам необходимо вывести фактический код статуса 404 как часть страницы с ошибкой. поэтому вместо перенаправления вы используете 'header ('http/1.1 404 not found'); echo 'not found'' напрямую. –

+0

вы должны использовать .htaccess или перенаправить страницу на перенаправление 301 или 302. –

ответ

2

Вы можете использовать это ... Вам нужно сделать .htaccess на вас корневой папке

.htaccess

Redirect 301 /index.html http://example.com/newdirectory/ 
0

Htaccess 404 Код ошибки

После того, как у вас есть страница 404 настройки, все, что вам нужно сделать, это отправить посетителям неправильный URL-адрес на эту страницу. Для этого просто добавьте следующую строку в файл .htaccess:

ErrorDocument 404 /404.php

Чаще всего, файл .htaccess будет находиться в папке public_html домой корневой на вашем сервере. Это может измениться, например, если вы запустили свой сайт или блог из определенной папки в public_html.

Альтернативно, вы можете разместить шаблон ошибки 404 в любом месте в папке. Например, вы можете разместить все сообщения об ошибках в папке с именем errormessages, ссылаясь на ошибку 404 на URL-адрес страницы.

ErrorDocument 404 /errormessages/404.php

Это все есть на него.

Теперь, когда посетитель просматривает неправильный URL на вашем сайте, они будут видеть ваши пользовательские 404 message.Its ошибок хорошо объяснили here.

+0

Могу я узнать, в чем причина просрочки голосования? – 404

1

любой интернет-гусеничный/паук или инструменты 404 кода состояния не найдены, так что вы лучше выходной код состояния, чтобы страница будет известно, что это такое

вы можете сделать это путем вывода необработанного заголовок, как этот

<?php 
if(!authorized){ 
    header("HTTP/1.0 404 Not Found"); 
    header("Location: http://www.website.com/404"); 
} 
echo "*OUTPUT*"; 
?> 

, но это само по себе вызывает проблемы безопасности, поскольку остальные страницы о utput выводится наружу и все еще выполняется:

$ curl http://localhost/stackoverflow/404.php 
*OUTPUT* 

так что вы должны выйти после редиректа, так что код будет выглядеть следующим образом:

<?php 
if(!authorized){ 
    header("HTTP/1.0 404 Not Found"); 
    header("Location: http://www.website.com/404"); 
    exit; 
} 
echo "*OUTPUT*"; 
?> 

и теперь он будет прекратить выполнение после редиректа

$ curl http://localhost/stackoverflow/404.php 
$ 

и для более безопасного использования htaccess.