почему плохо иметь статус заголовка 200 OK на странице ошибки 404?

У меня проблема У меня проблемы :/ err404 проблема со статусом заголовка 200OK страницы, хотя это должен быть заголовок 404. что не так с 200 OK? действительно ли что-то подобное 200 OK должно быть в статусе заголовка страницы с ошибкой 404?

ценю советы!! большое спасибо!


я думаю, это как-то связано с .htaccess. вот мой файл .htaccess;

ErrorDocument 404 /err404.html

RewriteEngine On

RewriteRule ^login.html$ index.php?s=login&a=loginDo [QSA,L]
RewriteRule ^logout.html$ index.php?s=login&a=logoutDo [QSA,L]
RewriteRule ^([^/]*).html$ index.php?s=$1 [QSA,L]
RewriteRule ^members/([^/]*)$ index.php?s=profile&username=$1 [QSA,L]
RewriteRule ^([^/]*)/$ index.php?s=listing&search[cityString]=$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?s=listing&search[neighborhoodString]=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*).html$ index.php?s=details&seo_friendly=$3 [QSA,L]

у меня также есть еще некоторые проблемы, связанные с этим файлом htaccess :(

Вопрос 1; когда URL-адрес вида http://localhost/fdfcdcvdvdvbdf.html (URL-адрес не существует), он перенаправляет на домашнюю страницу, но он должен перенаправлять на err404.html. Любая идея о проблеме? Перенаправление err404 хорошо работает в случае URL вида http://localhost/fdfcdcvdvdvbdf.ht или http://localhost/fdfcdcvdvdv

Вопрос 2; Как я могу исправить эту проблему 200 OK :/


person designer-trying-coding    schedule 25.02.2010    source источник
comment
Как у вас может быть страница ошибки 404 со статусом 200? Страница может иметь только один код состояния.   -  person Jeff Hornby    schedule 26.02.2010
comment
@jeff: вы можете сделать это, перехватив 404 внутри, а затем вернув страницу с описанием ошибки, но к этой странице прикреплен код 200.   -  person Peter Rowell    schedule 26.02.2010


Ответы (7)


Возвращая статус 200 OK для отсутствующих страниц, вы вводите в заблуждение браузеры (могут не показывать сообщения об ошибках, если у вас не было пользовательского HTML-кода ошибок) и поисковые системы (они начнут индексировать все, о чем им говорят, например, example.com/this- веб-сайт-ужасно-используйте-нашего-конкурента)...


Что касается вашего редактирования mod_rewrite:
http://example.com/lsdjkldsjlk.html соответствует вашему третий RewriteRule, поэтому он будет перенаправлен на index.php.

В сценарии index.php вы должны обнаружить отсутствие содержимого, относящегося к параметру s, и вернуть статус 404 через вызов header().

person Christopher Orr    schedule 25.02.2010
comment
да, @christopher, я заметил то же самое о третьей строке, но я не мог понять, как это сортировать: / я продолжаю гуглить, чтобы найти какой-либо исключительный случай, определяющий перенаправление существующей страницы без контента, если есть что-то подобное. - person designer-trying-coding; 26.02.2010
comment
Хм? В вашем скрипте index.php вы должны выполнять какой-то поиск содержимого на основе параметра s. Если идентификатор контента недействителен, выполните перенаправление на error.php. В этом скрипте верните статус 404, используя метод PHP header(), а затем выведите любое содержимое страницы с ошибкой, которое вам нравится. - person Christopher Orr; 26.02.2010
comment
да, я сделал это для записей, я поставил контроль над идентификатором и перенаправил на страницу с ошибкой. но я не могу сделать это для таких страниц, как контакт, дом, о нас и т. д. для них нет идентификатора. поэтому, если я пишу blabla.com/sdfsfdsg, он перенаправляет на домашнюю страницу, и я не могу управлять такой страницей с идентификатором:/ есть ли какой-нибудь трюк для управления несуществующим файлом? я столько гуглил, но ничего не нашел. - person designer-trying-coding; 04.03.2010
comment
Это то, во что я всегда верил. Однако Yahoo не рекомендует использовать страницы 404, но не предоставляет дополнительной информации: developer.yahoo.com/performance. /rules.html Кто-нибудь знает почему? - person Jaryl; 25.03.2010
comment
Это больше похоже на то, что они (команда по производительности) рекомендуют убедиться, что все ваши ресурсы (особенно JavaScripts) существуют, так как загрузка 404 тратит пропускную способность и другие последствия для производительности браузера. Они также говорят, что, как правило, персонализированные ошибки 404 могут быть полезны для пользователей. - person Christopher Orr; 25.03.2010

Значение 404 — это не просто украшение рождественской елки — оно передает реальную информацию о рассматриваемом URL-адресе, а именно о том, что он не существует. Отправка 200-й страницы, которая описывает тот факт, что страницы не существует, — это совершенно другое дело, особенно для программы, а не для человека.

person Peter Rowell    schedule 25.02.2010
comment
+1 Спасибо, что не упомянули поисковые системы. Кажется, что все просто хотят угодить поисковым системам в первую очередь. - person Gumbo; 26.02.2010
comment
Когда вы видите вопрос от кого-то, кто говорит, что мой клиент просит меня исправить код, который я продаю, но я не вижу причин, почему, упоминание поисковых систем вызовет больший отклик, чем стандартное соответствие. Вы должны напомнить людям, что из-за лени они не экономят время, а теряют бизнес. - person Josh Davis; 26.02.2010
comment
спасибо, что уделили время, @josh, но я не пытаюсь сэкономить здесь время. я просто пытаюсь узнать что-то из проблемы, которая у меня есть, я читаю эти комментарии и продолжаю гуглить новую информацию, которую я получаю отсюда. Я пытаюсь научиться хорошо делать что-то на своих ошибках, а не искать готовый код у кого-либо. благодаря. - person designer-trying-coding; 26.02.2010
comment
Извините, если я неправильно предположил, что вы тогда не хотели реагировать на жалобу вашего клиента. - person Josh Davis; 26.02.2010
comment
@Gumbo: Как ни странно, в сентябре прошлого года у нас был взлом сайта, о котором мы узнали только потому что внезапно выпали из SRP Google на странице 1. Это обсуждалось в /.: search .slashdot.org/story/10/02/04/1314221/. Мой комментарий начинается с search.slashdot.org/comments.pl?sid=1537058&cid= 31023700. С тех пор я работаю с исследователем безопасности в Москве, который занимается изучением такого рода атак. Единственная причина, по которой они не преуспели, заключалась в том, что это был сайт Django, и они не понимали конструкции URL. Это привело к тонне 404s. - person Peter Rowell; 26.02.2010

Что ж, семантика HTTP довольно ясна: если запрошенная страница не найдена на сервере, следует отправить 404.

Кроме того, если вы не возражаете против того, чтобы ваш сайт сканировался/индексировался с мусором (когда есть ненайденные страницы)...

person jldupont    schedule 25.02.2010

Во-первых, вы, вероятно, не хотите, чтобы поисковые системы индексировали ваши страницы 404.

person nobody    schedule 25.02.2010

Кстати, вы знаете, откуда берется 404 на "странице ошибки 404"? Это именно код ошибки HTTP.

Программное обеспечение должно уметь различать правильные и неправильные страницы. Если вы отправите страницу с «404» в качестве изображения, никакое программное обеспечение никогда не распознает, что что-то не так.

person Vlad    schedule 25.02.2010

Это не страница с ошибкой 404, если она возвращает статус 200. Все, что должно отказать, если страница недоступна (кэши, прокси, скрипты), не дает сбоев, и возникает хаос. Кроме того, Google вас возненавидит (поскольку спам-сайты вернуть 200 страниц по любым запросам.) Просто вернуть чертову ошибку 404.

person Josh Davis    schedule 25.02.2010

Это проблема доступности. 200 OK означает, что отправленный ресурс является запрошенным ресурсом. 404 означает, что запрошенный ресурс не может быть найден, а отправленный ресурс является страницей с ошибкой. Браузеры используют отправляемый вами код состояния, чтобы узнать, все ли в порядке. Вы можете не заметить никакой разницы на отображаемой странице как человек, но поисковые роботы должны знать такие вещи (иначе они проиндексируют ваши ошибки и тому подобное).

person Kris    schedule 25.02.2010