具体的な設定方法は?
具体的な設定方法は?
ここまででステータスコードの役割と確認方法を解説しました。では表示する内容がないことをHTTPレスポンスヘッダーのステータスコードで適切に示すためには、エンジニアは具体的にどのように処理すればいいのでしょうか。2パターンに分けて説明していくことにします。
手法その1:
Apacheで404エラーを任意のページ(カスタムエラーページ)に設定する
※ステータスコードの判定はサーバーに任せて、存在しないときに表示するページを自分でカスタマイズしたい場合
「httpd.conf」の編集権限があれば「httpd.conf」に、レンタルサーバーなどのホスティングサービスを利用している場合で「httpd.conf」の編集権限がなければ「.htaccess」に以下の記述を追加してください。
ErrorDocument 404 /example/404page.html
ただし、ファイルを指定する際はファイルのパスで記述してください。サーバー名を含めた「http://www.example.co.jp/exsample/404page.html」のようなURLで指定すると、同一ホストにもかかわらず404ではなく302リダイレクトがかかってしまいます。
WebサーバーにApacheのバージョン1.3系/2.0系/2.2系のいずれかを使用している場合には、基本的にすべてのバージョンで同じ設定方法になります。
参考:http://httpd.apache.org/docs/1.3/custom-error.html(Apache1.3系の場合、英語で表示されてしまう場合はブラウザの言語設定を日本語に変更してください)
参考:http://httpd.apache.org/docs/2.0/ja/custom-error.html(Apache2.0系の場合)
参考:http://httpd.apache.org/docs/2.2/ja/custom-error.html(Apache2.2系の場合)
手法その2:
PHPなどのプログラム側で404を返す
※アクセスされたプログラム側でデータベースに問い合わせて、はじめて商品があるかないかを判断し404を返しなければならない場合
このケースでは、プログラムからステータスコードを指定する必要があります。PHPを利用しているのであればファイルの冒頭に以下の記述を加えてください。
<?
// 404のレスポンスヘッダーを指定します。
header("HTTP/1.1 404 Not Found", false , 404);
// 続いて「お探しの商品は存在しません」などの表示を返す
?>
こうやってHTTPヘッダーを操作しクライアントにレスポンスを返します。その他の言語でもHTTPヘッダーを操作する関数やオブジェクトがありますので同様の操作を実現できます。
クローラーに正しくページを渡した後は
次はインデクサの部分です。検索エンジンの内部プログラムになるため、そのロジックに直接手を出せる部分ではありません。しかし、ステータスコード200で返したコンテンツを彼らはじっくり解析してきます。この解析アルゴリズムこそ、検索エンジンの中枢です。どのようにするとそのページを正確に評価してもらうかという部分がSEOのメインでもあります。細かいテクニックは次回以降で説明していきたいと思います。
次回は「URLの永続性」というテーマでお話ししたいと思います。
余談ですが、Googleではインデックスしたページが1兆ページを超えたそうです(Googleのオフィシャルブログの投稿より)。クローラーはそのページに変更がないかを確認するため同一ページを何度も取得しに来ますから、インデックス数以上のクローリングを行っているということになります。膨大なリクエスト数だと想像できます。
今後も日々増えていくサイトやページに対して、クローラーはサーバー増強などで対応していくと思いますが、開発者の観点から考えると最大処理数に制限をかけるということも考えられます(あくまで可能性ですが)。たとえば、仮に1日に1万リクエストしか処理できないとします。10サイトに平均的にクロールリソースを割り当てるとなると、1サイトあたり1,000ページしかクロールしてくれない計算になります。
もしここで、意味もなくリダイレクトを使用していた場合、リクエストは2回1セットになりますから、500ページしかクローリングされません。あなたのサーバーの処理負荷も高まりますし、クローリング数も減ってしまってはいいことがありません。
不要なリダイレクトをしていないか、今一度自分の管理しているサイトを見直してみてください。
ソーシャルもやってます!