404エラーページと言うと、存在しないページのURLでアクセスされた時に、「存在しません」を伝えるページのこと。
404エラーページでは、ページの見た目だけじゃなくて、「存在しません」のHTTPステータスコード(=404)も密かに送信されている。
実は、このサイトの環境(coreserver + wordpress)では、404が送信されるところを200が送信されてしまっている。(200はページが存在して正常に送信されたってこと)
見た目は、404エラーページなだけに、一見気付かないのだけれど、ステータスコード200が送信されると非常に都合が悪い。
ステータスコードは人には判らないだけで、利用しているプログラムは多い。
特に検索エンジンのbot(クローラー)なんかは、このステータスコードでページの有無を判断したりしている。 存在しないページで200を返しているとスパム行為と取られかねない。
;゚Д゚)ヤヴァいよ
なんとか対策しないと・・・
で、wordpressのソースを追っかけてみた
ヘッダーの成形はfunctions.phpファイルにあるstatus_header()関数で行っているようだ。
404エラーの場合最終的に
header("HTTP/1.1 404 Not Found",true,404);
のようなことを実行してるっぽい。
header関数でステータスコードが書き変わらないなら、僕にはお手上げ・・・
良くわからない(´ー`)y─┛~~
で、見つけたページ
WordPressでステータスコード404のはずが200になってしまう時の対処法
404.phpの一行目に以下を追加する。(get_header()より上)
<?php header("HTTP/1.1 404 Not Found"); ?>
<?php header("Status: 404 Not Found"); ?>
ふぅ~
なんとか、一件落着。
最初から、検索すりゃ良かったよ!
タグ: 404エラー, CoreServer, WordPress