10

主にコンテンツ(記事、データ要素など)のページリストを表示しているサイトがあり、ユーザーが利用可能なリスト範囲外に移動した場合(たとえば、手動で編集されたURL)にHTTP404を返すことについて疑問に思っています。

一部のサイトは「結果なし/ページ番号が範囲外です」と表示するだけで、一部のサイトはさらにHTTP404ステータスを返します。

それについてどう思いますか、そしてその理由は何ですか?

アップデート

それは、API応答ではありません。この質問は、特にメインエリアにリスト/テーブルを表示するユーザー閲覧ページに関するものです。

アップデート

境界線の例:表示されているリストのデータがまだ存在しないため、最初のページは範囲外のページです。

404を表示する必要がありますか?検索結果がどこにあるかは気になりませんが、ページングされたリスト/データテーブルをわかりやすく表示するのは難しいようです。

例:Stack Overflowの実行の初日で、まだ質問が存在しない場合、ホームページにアクセスすると、404または200に「質問はまだありません」というメッセージが表示されますか?

4

6 に答える 6

8

これは絶対に404の場合だと思います。これは、存在しないリソースに対するリクエストです。アイテムを表示するために使用される一般的なページ/スクリプトが無関係であるかどうか。

于 2010-03-31T14:20:02.023 に答える
4

ページ番号がURI(クエリ文字列またはパス)のどこに配置されているかに関係なく、ページ番号が!= 1の場合は404を選択し、結果がないがページ番号が正確に1であるかどうかに関係なくソフト404を選択します。与えられた。

なんで?

結果セットページ1は、結果セットのランディングページとして存在するため(検索結果も-ここでGoogleを参照)、結果セットにデータがないことを示すために(結果セットを表示しない場合は)検出されて存在します。 。

次に、結果セットの範囲外の結果セットのページ番号が見つからない場合、これらのページ/リソースが存在する意味のあるポイントはありません。したがって、404です。「データがありません」というメッセージを伝えるために存在すると主張する必要がある場合は、意味があります。 、したがって、インデックスを作成する必要があります-検索エンジンの悪夢!

HTTP 400 Bad Requestは、要求が正しくない可能性があることを示唆するため、不適切な選択です。

HTTP 400 Bad Request-構文が正しくないため、サーバーが要求を理解できませんでした。クライアントは変更せずにリクエストを繰り返すべきではありません

404 Not Foundはこのケースについて曖昧であり、この場合、IMOは両方の方法で解釈できます

サーバーは、Request-URIに一致するものを検出しませんでした。状態が一時的であるか永続的であるかは示されません。410(Gone)ステータスコードは、サーバーが内部的に構成可能なメカニズムを通じて、古いリソースが永続的に利用できず、転送アドレスがないことを知っている場合に使用する必要があります。このステータスコードは、サーバーがリクエストが拒否された理由を正確に明らかにしたくない場合、または他の応答が適用できない場合によく使用されます。

于 2010-03-31T18:52:30.537 に答える
2

はい、それがAPIの場合、4xxエラーはリソースの一時的な不足を示しているため、後で存在する可能性があります。APIでない場合は、404ページの方がもう少しユーザーフレンドリーであることをお勧めします(例:http://www.didcot.com/forum/?read = 1234567)。

于 2010-03-31T14:05:46.830 に答える
1

-ユーザーが利用可能なリスト範囲外に移動したとき。

範囲外のリンクを提供しないでください。結果の最後のページに、「次の」リンクを表示しないでください。まあ、あなたはそれをしていないと思います。しかし、他の誰かがあなたの範囲外のページにリンクする可能性があり、それは私たちに興味深い質問をもたらします:

すでに述べたように、存在しないリソースについては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
于 2010-03-31T21:25:36.800 に答える
0

どのページを返すかを指示するのがクエリ文字列の場合、404は適切でない可能性があります。クエリ文字列に含まれていない場合、ドキュメントは存在しないため、404が適切です。

于 2010-03-31T15:00:32.020 に答える
-1

一般にページが見つかったため(display.php?page = 62など)、404は返されません。

私の意見では、最善の解決策は、ユーザーに「ページ番号が範囲外/利用不可」であり、最後の既存のページへのリンクまたはhistory.back()リンクを通知することです。

HTTPコード400はあなたが探しているものかもしれません。

于 2010-03-31T14:08:24.407 に答える