я должен отправить статус как 404 или 200? - PullRequest
4 голосов
/ 10 февраля 2010

Я использую Rails для создания веб-приложения. Если для URL не найдена запись, скажем http://example.com/city/non_existant_city, то у меня есть следующий код.

 render :text => "record was not found", :status => :not_found

В Firefox я вижу сообщение.

В Chrome (на Mac) я вижу страницу Chrome 404, и на этой странице не отображается сообщение, которое я отправляю.

Это заставляет меня задаться вопросом, должен ли я отправлять статус как 200. Я отправлял 404, чтобы веб-сканеры могли понять, что эта ссылка последовательно возвращает 404, поэтому через некоторое время отказываются от этой ссылки.

Ответы [ 3 ]

7 голосов
/ 10 февраля 2010

Вы должны использовать 404. Искатели не только останавливают посещение недействительных ссылок, но и не наказываются за дублированный контент, если это страница 404, как если бы это было 200.

Что касается Chrome, он заменяет только 404 страницы, если содержимое слишком короткое (менее ~ 520 символов)

См .: http://perso.hirlimann.net/~ludo/blog/archives/2008/09/chrome-and-404s.html

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

Часто ли запись не может быть найдена? Например, люди вводят название города, а затем, если имя не найдено, вы могли бы дать им альтернативы? Если это так, то я бы вернул страницу 200 с новым полем запроса и т. Д.

Если это веб-сервис, то 404 - это нормально, если все, что вы хотите, чтобы ваш API возвращал в таких случаях, "не найдено". Но если вы хотите, чтобы ваши API дополнительно возвращали другую информацию, то 200 (плюс неуспешный код ошибки и другая информация) - это путь.

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

Если вы говорите конечному пользователю, что страница не существует, отправьте 404.

Если вы сообщаете конечному пользователю, что страница существует, а записи, которую они искали, нет, то создайте обычную страницу (200) и отобразите в ней сообщение об ошибке.

Многие браузеры отображают «дружественные» 404 страницы, поэтому вы не видите свое сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...