2010-02-10 2 views
4

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

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

В firefox Я вижу сообщение.

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

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

ответ

7

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

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

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

1

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

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

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

1

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

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

Смежные вопросы