Подходит ли HTTP 404 для номера страницы, выходящего за пределы допустимого диапазона для содержимого с подкачкой? - PullRequest
8 голосов
/ 31 марта 2010

У меня есть сайт, на котором в основном отображается постраничный список контента (статьи, элементы данных и т. Д.), И мне интересно вернуть HTTP 404, когда пользователь переходит за пределы доступного диапазона списка (например, отредактировано вручную). URL) *. 1001 *

Некоторые сайты просто отображают «Нет результатов / Номер страницы вне диапазона», а некоторые возвращают дополнительно возвращают статус HTTP 404.

Что вы думаете об этом и почему?

ОБНОВЛЕНИЕ

Это не и ответ API. Этот вопрос относится к просмотренным пользователем страницам, которые помимо прочего показывают список / таблицу в основной области.

UPDATE

Пример границы: 1-я страница является страницей, выходящей за пределы допустимого диапазона, поскольку для указанного списка еще нет данных.

Должен ли я показать 404? Если бы это был результат поиска, я бы не возражал ... но для простого просмотра постраничного списка / таблицы данных кажется грубым.

Пример: первый день прогона стека переполнения, и вопросов еще нет, вы попали на главную страницу и что, 404 или просто 200 с сообщением «Еще нет вопросов»?

Ответы [ 6 ]

6 голосов
/ 31 марта 2010

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

1 голос
/ 01 апреля 2010

- когда пользователь выходит за пределы доступного диапазона списка.

Вы не должны предоставлять ссылку вне диапазона. На последней странице результатов не показывать ссылку «следующая». Ну, я думаю, ты этого не делаешь. Но кто-то другой может дать ссылку на вашу страницу за пределами допустимого диапазона, что приводит нас к интересному вопросу:

Как уже было сказано, 404 должно быть возвращено для несуществующего ресурса. Реальный вопрос: «Что делает ресурс?»

Я бы сказал, что если число результатов часто меняется (например, ежедневно) и также может уменьшаться (поэтому страница результатов № 9 может существовать сегодня, но не обязательно завтра), функциональность листинга / поиска в целом делает ресурс, не одна страница результатов, которая просто представляет конкретное состояние ресурса.

Вместо этого, если количество результатов может только увеличиваться, т. Е. Перечисленные объекты не являются волативными, а постоянными, имеет смысл отображать 404 для страниц вне диапазона, поскольку существующая страница результатов больше похожа на ресурс, т.е. документ должен был остаться там.

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

Просто отметим, что страницы результатов вне допустимого диапазона получают статус 200 от Google: (не то, чтобы Google был богом).

$ curl -s --head -A 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; fi-fi) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10' 'http://www.google.com/search?q=stackoverflow&start=1000' | grep ^HTTP
HTTP/1.1 200 OK
1 голос
/ 31 марта 2010

Да, если это API, так как ошибки 4xx указывают на временную нехватку ресурсов, которые могут существовать позже. Если это не API, я бы предложил, чтобы любая страница 404 была немного более удобной для пользователя (например, например http://www.didcot.com/forum/?read=1234567).

0 голосов
/ 31 марта 2010

Я бы пошел на 404, когда номер страницы равен! = 1 , независимо от того, где номер страницы помещен в URI (строка запроса или в пути), и пошел бы на soft 404 когда результатов нет, но номер страницы ровно 1 или не указан .

Почему?

Страница набора результатов 1 существует в качестве целевой страницы для набора результатов ( даже результаты поиска - см. Google здесь ), поэтому она найдена и существует (если не для отображения набора результатов), чтобы сообщить вам что в наборе результатов нет данных.

Тогда любой номер страницы набора результатов за пределами диапазона набора результатов не найден, поэтому нет смысла в существовании этих страниц / ресурсов, следовательно, 404. Если нужно утверждать, что они существуют, чтобы передать сообщение «БОЛЬШЕ данных», следовательно они значимы, следовательно, должны быть проиндексированы - кошмар поисковой системы!

HTTP 400 Bad Request - неправильный выбор, поскольку он предполагает, что запрос никогда не может быть правильным.

HTTP 400 Bad Request - запрос может не быть понятым сервером из-за искаженный синтаксис. Клиент ДОЛЖЕН НЕ повторять запрос без модификации

404 Not Found является неопределенным в этом случае, и в этом случае ИМО может интерпретироваться в обоих направлениях

Сервер ничего не нашел соответствие Request-URI. Нет указывается, является ли состояние является временным или постоянный. Код состояния 410 (Gone) СЛЕДУЕТ использовать, если сервер знает, через некоторые внутренне настраиваемые механизм, что старый ресурс постоянно недоступен и не имеет адрес переадресации. Этот статус код обычно используется, когда сервер не хочет раскрывать, почему именно запрос был отклонен, или когда другие ответы не применимы .

0 голосов
/ 31 марта 2010

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

0 голосов
/ 31 марта 2010

Ну, я бы не вернул 404, потому что страница в целом найдена (например, display.php ? Page = 62).

На мой взгляд, лучшее решение - сообщить пользователю «Номер страницы вне диапазона / недоступен» и ссылку на последнюю существующую страницу или ссылку history.back ().

HTTP-код 400 может быть то, что вы ищете.

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