Web制作メモ -トップへ-

[PHP] クロール効率が悪化するソフト404エラーの対処方法

PHP2015.03.06 12:42

ソフト404エラーとはクローラーのエラーです。

クローラーは404が返されればクロールしませんが、それ以外の場合はクロールを試みます。

例えば、エラーページは404を返すべきなのに、404を返さずエラーページを表示すると、そのエラーページが表示さるURLごとにクロールが試みられる為、無駄なクロールが発生してサイト全体のクロール効率が悪くなります。

というのが、ソフト404と呼ばれるエラーです。

クローラーは一日にクロールできるページ数がサイトごとに決まっており、新規のサイトなどではとても少ないです。

ソフト404エラーなどの無駄なクロールを無くすことで、クロール速度が改善できます。

ソフト404エラーが発生するコード

エラーページ(下記の例では404.html)をリダイレクトで表示するとソフト404が発生します。

ファイルが無い場合にリダイレクトでエラーページを表示

if(!file_exists($filename)){
    header( 'Location:http://○○○.△△/404.html', true, 303 );
    exit();
}

ウェブマスターツールで表示される内容

上記の場合、Googleウェブマスターツールのクロールエラーの箇所にソフト404エラーが表示されます。

ソフト404エラー

詳細を押すとGoogleによる解説が表示されます。

ソフト404エラーの詳細

ソフト404エラーの対処方法

header()で404を返してから、404.htmlをinclude_once()で表示すれば、ソフト404は発生しません。

ソフト404が発生しないコード

if(!file_exists($filename)){
    header('HTTP/1.1 404 Not Found');
    include_once($_SERVER['DOCUMENT_ROOT'] . '/404.html');
    exit();
}

404を返すだけでは、ページが空白のままで何も表示されないので、404用のファイル(404.html)をinclude_once()で読み込んで表示しています。