• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ページが見つからないのに200 OKの理由)

ページが見つからないのに200 OKの理由

このQ&Aのポイント
  • 狙い目の記事が404 Not Foundになった場合でも、ステータスコードは200 OKになることがあります。その理由について詳しく解説します。
  • URL推測で未来のページを検索した場合、セキュリティ上の理由から控えた方が良いかについて考えてみましょう。
  • 未来のページへのアクセスが可能な状態であっても、記事の内容が同じ場合は古い記事が削除されることがあります。詳細について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6809/9681)
回答No.2

>http://www.example.com/2021/01/32 にアクセスする時、 >「お探しのページは見つかりません」と表示されたのですが、 >何故200のステータスコードなのでしょうか? そのサイトのつくりによるので、一般的な話ではないことにまずご注意を。 おそらくそのサイトにおいて、フォルダ名のように見える日付部分が、実際のフォルダではないのでしょう。 たぶんhttp://www.example.com/YYYY/MM/DD というURLでアクセスされたときに、URL全体から YYYY MM DD の部分を取り出し、 記事日付=mktime(0, 0, 0, MM, DD, YYYY); '時, 分, 秒, 月, 日, 年 みたいな形で合成し、データベース検索をしている、といった仕組みが予想されます。 mktime関数で年月日を指定して「日付値」に変換したとき、1月32日は2月1日と同値となるので、~/2021/01/32 と ~/2021/02/01 は同じページを表示することになるのではないかと考えられます。 ---- >存在しないページにアクセスする時、 >ステータスコードが404では無く200となっていました。 そのサイトの場合、先に書いたような仕組みが動き、記事日付を得て、データベースを検索し、存在するなら記事を表示する、みたいになっていると思います。 記事を表示するのもエラーを表示するのも、その仕組み上の流れで表示するので、HTML自体は通常の200 OK のコードで送ってきていると考えられます。 そこまでのHTMLを出力している途中で、記事が無いことがわかったとしても、わざわざ404エラーに飛ばし直すのは、かえって面倒ですから。 別にWeb規約上、「見つからない場合は404エラーを返さなければならない」と規定されているわけではないのです。 ごく一般的なWebサーバでは、そのサイトの様な仕組みは無く、URLをそのままフォルダとファイル名であると解釈して、Web root フォルダからそのパスでファイルを表示しようとします。 そして、ファイルが存在しない場合、一般的には「見つかりません」表記のHTMLを、404ステータスとともに返します。 そのサイトはそうではない、というだけです。 ---- >http://www.example.com/2021/01/32 にアクセスした時、 >2021年2月1日の記事 >http://www.example.com/2021/02/01 は今後使われる事なくなり、 >2月1日の記事は削除されるのでしょうか? それはあり得ないです 「おかしいページが表示される」可能性はあり得ますが、「外部ユーザーが勝手に記事を消せる」なんてことは出来ない仕組みに最初からなっています。

noname#254974
質問者

お礼

ありがとうございました。 詳しい解説でとても分かりやすかったです。

その他の回答 (1)

  • 121CCagent
  • ベストアンサー率52% (15558/29898)
回答No.1

>何故200のステータスコードなのでしょうか? そのあたりはわかりません。恐らくそのサイトのWebサーバーの設定によるのかな?とは思います。 >URL推測で未来のページを検索していますが、 >セキュリティ上今後控えた方が良いのでしょうか? どうでしょうね。別に不正アクセスって訳でもないですし。 ただWebサーバーの管理者がログを見て不審なアクセス?って疑いの目を持つ可能性はありますが。

noname#254974
質問者

お礼

ありがとうございました。

関連するQ&A