Обработка 404-х с ненаправляющими страницами, которые не могут быть » 1 ‘d

#url-rewriting #http-status-code-404 #google-plus-one

#перезапись url #http-status-code-404 #google-plus-one

Вопрос:

Я использую пользовательскую страницу с ошибкой .htaccess «error.php «. Проблема в том, что все, что он делает, это просто перенаправляет их.

Я хотел бы, чтобы мой 404 отображал запрошенный URL в адресной строке, как если бы пользователь никогда не перенаправлялся.

Вот несколько примеров модели:

http://us.battle.net/wow/en/22222222222222222222

http://en.wikipedia.org/wiki/222222222222222222222

Эти страницы просто используют средство перезаписи URL, которое на самом деле является чем-то вроде «domain.com/index.php?page=2222222222222222222222»? Если да, то они просто распечатывают текст, не указывая, что это страница 404, и каким-либо образом не помечают его как страницу ошибки?

Они должны отправлять что-то в заголовке. У меня есть расширение Chrome для кнопки 1, и когда я перехожу к перечисленным страницам, оно выдает мне сообщение об ошибке «Невозможно 1 на этой странице».

Кто-нибудь имеет представление, какой «флаг» здесь используется?

Комментарии:

1. Эти страницы 404, я предполагаю, что вы не можете использовать » 1″ эти страницы.

2. Мой error.php может быть 1 ‘d, так что я что-то упускаю…

3. Если вы используете Chrome, вы сможете использовать инструмент разработчика, верно? В разделе «Сеть» вы можете просмотреть код ответа. В этих случаях это 404.

Ответ №1:

Да, вы можете отправлять коды состояния HTTP, используя предварительный процессор, который определяет, что страница не существует. Например, в PHP вы бы использовали это:

 header('HTTP/1.1 404 Page Not Found');
  

Это приведет к отправке заголовка 404 вместе с пользовательской страницей 404, которую вы хотите отобразить. Вы можете сделать это с любым кодом состояния HTTP, даже создать свой собственный (хотя они, вероятно, не будут распознаны).

 header('HTTP/1.1 418 I'm a Teapot');
  

Если вы используете ErrorDocument определение Apache в вашем файле .htaccess, он должен сохранять код ошибки до тех пор, пока вы не измените заголовки с определенной страницей (например, запустив файл PHP) или перенаправите на новую страницу. Использование обычного текста и / или (возможно) HTML-файла сохранит заголовок 404. Я никогда не тестировал это с HTML-файлом.

Комментарии:

1. Chrome считает, что моя страница находится в цикле перенаправления, когда я пытаюсь добавить этот препроцессор в свой пользовательский документ ErrorDocument. Я собираюсь просто заставить мои PHP-страницы отправлять заголовок вместе с содержимым «ошибка», используя перезапись URL, когда клиент отправляет недопустимый материал $ _GET …. возможно, это то, что я изначально пытался сделать. Спасибо, я не знал, что вы можете отправлять содержимое страницы вместе с заголовком 404, я думал, браузер прервет загрузку, когда получит это.