почему плохо иметь заголовок 200 OK на странице ошибки 404? - PullRequest
4 голосов
/ 26 февраля 2010

У меня возникла проблема. У меня проблема: проблема с заголовком 200OK страницы / err404, хотя она должна быть 404. что плохого в том, чтобы иметь 200 ОК? действительно ли что-то подобное 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: /

Ответы [ 7 ]

20 голосов
/ 26 февраля 2010

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

6 голосов
/ 26 февраля 2010

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


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

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

3 голосов
/ 26 февраля 2010

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

2 голосов
/ 26 февраля 2010

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

2 голосов
/ 26 февраля 2010

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

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

1 голос
/ 26 февраля 2010

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

1 голос
/ 26 февраля 2010

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

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

...