У меня есть сайт, который главным образом показывает разбитый на страницы список содержания (статьи, элемент данных, и т.д.), и я задаюсь вопросом о возврате HTTP 404, когда пользователь перешел за пределами диапазона списка готовности (например, рукой отредактировал URL).
Некоторые сайты просто не отображают "Результатов/Номера страницы из диапазона", и некоторый возврат дополнительно возвращают состояние HTTP 404.
Каково Ваше взятие на этом, и почему?
ОБНОВЛЕНИЕ
Это не и ответ API. Этот вопрос в отношении просмотренных страниц пользователя, которые среди прочего показывают список/таблицу в основной области.
ОБНОВЛЕНИЕ
Пограничный пример: 1'st страница является страницей из диапазона, потому что никакие данные для показанного списка еще не существуют.
Я должен показать 404? Если бы это, где результат поиска я не возражал бы..., но для простого просмотра разбитого на страницы списка/таблицы данных, кажется резким.
Пример: первый день выполненного Переполнения стека и никакие вопросы существует уже, Вы поражаете домашнюю страницу и что, 404 или просто передают 200 с "Никакими вопросами уже"?
Я бы выбрал 404, когда номер страницы равен! = 1 , независимо от того, где номер страницы помещен в URI (строка запроса или путь), и выбрал бы soft 404 , когда нет результатов, но номер страницы равен 1 или не указан .
Почему?
Страница 1 набора результатов существует как целевая страница для набора результатов ( даже результаты поиска - см. Здесь Google ), поэтому она найдена и существует (если не для отображения набора результатов), чтобы сообщить вам что в наборе результатов нет данных.
Тогда какой-либо номер страницы набора результатов за пределами диапазона набора результатов не найден, то для существования этих страниц / ресурсов нет смысла, следовательно, 404. Если кто-то должен утверждать, что они существуют для передачи сообщения «Нет БОЛЬШЕ данных», следовательно они значимы, следовательно, нуждаются в индексировании - кошмар для поисковых систем!
Неверный запрос HTTP 400 - плохой выбор, поскольку он предполагает, что запрос никогда не может быть правильным.
Неверный запрос HTTP 400 - запрос не может быть распознан сервером из-за неправильного синтаксиса . Клиенту НЕ СЛЕДУЕТ повторять запрос без модификаций
404 Not Found в этом случае неточно, и в этом случае ИМО может интерпретироваться в обоих направлениях
Сервер не нашел ничего , соответствующего Request-URI. Не указывается , является ли условие временным или постоянным. Код состояния 410 (Gone) СЛЕДУЕТ использовать, если сервер знает через некоторый внутренне настраиваемый механизм, что старый ресурс постоянно недоступен и не имеет адреса пересылки .Этот код статуса обычно используется, когда сервер не хочет раскрывать, почему запрос был отклонен, или , когда нет другого ответа применимо .
Если ваша строка запроса сообщает, какую страницу возвращать, 404 может не подходить. Если его нет в вашей строке запроса, значит, документ не существует и 404 определенно подходит.
Что ж, я бы не возвращал 404, потому что страница вообще найдена (например, display.php ? Page = 62).
На мой взгляд, лучшее решение - сообщить пользователю «Номер страницы вне допустимого диапазона / недоступен» и указать ссылку на последнюю существующую страницу или ссылку history.back ().
HTTP Code 400 может быть тем, что вы ищете.
Я бы сказал, что это абсолютно подходящий случай для 404. Это запрос на несуществующий ресурс. Используется ли общая страница/скрипт для отображения элементов, не имеет значения.
Да, если это API, поскольку ошибки 4xx указывают на временную нехватку ресурсов, которая может возникнуть позже. Если это не API, я бы посоветовал любую страницу 404 немного более удобную для пользователя (например, http://www.didcot.com/forum/?read=1234567 ).
- когда пользователь выходит за пределы доступного диапазона списка.
Вы не должны предоставлять ссылку вне допустимого диапазона. На последней странице результатов не показывать ссылку «следующая». Что ж, я думаю, вы этого не делаете. Но кто-то другой может ссылаться на вашу страницу вне диапазона, что вызывает у нас интересный вопрос:
Как уже было сказано, 404 следует возвращать для несуществующего ресурса. Реальный вопрос: «Что делает ресурс?»
Я бы сказал, что если количество результатов часто меняется (например, ежедневно) и может также уменьшаться (так что страница результатов № 9 может существовать сегодня, но не обязательно завтра), функциональность листинга / поиска в целом составляет ресурс, а не отдельную страницу результатов, которая просто представляет конкретное состояние ресурса.
Вместо этого, если количество результатов может только увеличиваться, т. Е. Перечисленные объекты не являются произвольными, а постоянными, имеет смысл отображать 404 для страниц вне диапазона, поскольку существующая страница результатов больше похожа на ресурс, т. Е. документ, предназначенный для того, чтобы остаться там.
В целом, я думаю, что универсального ответа не существует, но решение остается за веб-мастером, потому что не существует достаточно четкой спецификации. Следует помнить, что коды состояния возвращаются в первую очередь для клиентов, не являющихся людьми (роботы, поисковые системы), которые не могут понять содержание страницы, поэтому на практике это в основном проблема SEO.
Просто отметим, что страницы результатов, выходящие за пределы допустимого диапазона, получают от Google статус 200: (не то чтобы 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