
内部ページが数万ページあるようなWEBサイトを作る際にSEO的に伸び悩む!
ヘッドライン
私は幾度となく、大量のデータを有するWEBサイトをPHPで作ってきました。
内部ページが数万~数十万にもなるような膨大なWEBサイトです。
コンテンツ自体もオリジナルで、普通に考えたらSEO的にスパム扱いになるはずが無いサイトなのに、ある程度以上にはならない!
こういう経験をしてきました。
そして、そのようなWEBサイトをもっているパワーをそのまま引き出すためにやってきた施策をご紹介いたします。
ディレクトリ構成が何だか変?
例えば、ディレクトリA、B、Cとあったとします。
ディレクトリとはいわばカテゴリわけという意味合いを持ち、Googleでは、そのディレクトリ単位で配下カテゴリとみなす傾向があるようです。
例えばA→A-1→A-1-1という感じで末端ページにたどり着く構成だった時、Bからは本来この末端ページに行けないはずなのです。
でも、その多くはAとBとCは末端ページへ進入の入り口の違いでしかないという構成にされる方が結構多いのです。
本来、AとBとCは永遠に交わらないはずなのです。
貴方のサイトのディレクトリ構成はどうでしょう?
Aはどこまで行ってもAのディレクトリです。
間違っても途中からBと合流はしません。
Bと合流するということはBは、Aを親に持つA-Bというディレクトリなのです。
そのあたりをしっかり理解してディレクトリ構成を考えてみるだけで、おそらくGoogleロボットがそのWEBサイトをちゃんと整理しているサイトだと認識します。
本来サイトツリーはこうなる!
↑トップページから次のカテゴリがあり、各カテゴリ以下にそのジャンルに類する情報が末端ページとして存在するツリー図。
ロボット型エンジンはこのディレクトリ構造をカテゴライズとして認識し、クロールしていく。
こうなっていませんか!誤ったディレクトリ構造
↑様々なディレクトリ訳があるにもかかわらず、最終的に向かう先が一つの末端ページという流れは良くありません。
これは、この末端ページがトップページという扱いになってしまいます。
プログラムで作成したら評価が上がらない?エラー処理をしていますか?
例えばPageIDのようなものを私、表示内容を切り替えるようなプログラムを作ります。
簡単に言うと、商品リストのようなものがあり、各商品にIDがあります。
id=1は、商品Z、id=2は商品Y。。。といったような、IDごとに内容が違うようなページを作りたいなどという場合にプログラムを利用しファイル1個で様々な出力結果を出せるようにし、内容物をリスト化しそのリストの中から該当する詳細情報を導き出すというプログラムです。
ショッピングカートプログラムや、ブログソフトなどは基本的にこのようなつくりになっており、記事IDや商品IDをプログラムに渡すことで、中身を変えて出力しています。
しかし、このプログラム作りが甘くても動いてしまうのです。
どういうことかと言いますと、商品IDは、1~10までの商品が登録されているとします。では、ID100番を呼び出そうとしたらどうなるのでしょうか?
存在しない番号の処理をしていないと、情報が無いまま、出力処理します。
これはもっと厳密に言うと、本来存在するはずがないページが、空の情報で存在してしまうことにつながります。
ようは、無限にページが存在するということになります。
ロボットでは、情報の有無などは判断できないため、基本的にHTTP通信上におけるヘッダ情報でページの存在可否しか判断しません。
今の空の情報でも、HTTPヘッダ的にはレスポンスコード200の、問題なく処理ができる存在しているファイルという扱いです。
そうすると、必ず、存在するページより本来存在しえないページの方が多くなります。(存在しないID番号は無限に増やすことができるから)。なので、ロボットは永遠に無限ループしてどこまでクロールしてもレスポンスコードが200で巡回しつづけます。
そうすると、ロボット的にはおかしいと判断して、SPAMとまでは言いませんがある種のフィルタ的なものを掛けるのではないかと言われています。
私もレスポンスコードまで意識せず作ったWEBサイトでクロール数は数十万ページ、にもかかわらず、PageRANKも上がらず、アクセスも思った以上に小さいけど、維持するのは膨大なデータというサイトを5年近く運用してきました。
5年経過した頃に、考えてみたら存在しないページのエラー処理をしていないと思い、IDが存在しないページになるはずのIDが渡されてきたとき、レスポンスコード404エラーを出力するようにプログラムを修正しました。
そうしたところ、5年間やってきてPageRank3、目指していたメジャーキーワードで、よくて100位前後だったサイトが、その修正だけを行って1か月後にキーワードで30位まで上昇しました。
また、ロングテールキーワードでのアクセスが爆発し、当時ユニークで500アクセス程度だったサイトが一気に5000ユニークアクセスまで伸びました。
エラーコードを出力することで、明確な境界線ができたのです。
多ければいいというものではなく、有無が明確であることは重要なのです。
プログラムを組んだ場合に必ずと言ってもいいほどあり得るこの処理を行っていないプログラムは大量にあります。
特に無償で利用できる掲示板システムや、問い合わせフォームの類にはよくあるバグです。
掲示板システムを設置した途端サイトの評価が下がったという問い合わせをよくいただきますが、最初によく存在しないIDを渡したりしてテストしてみますが、要は無限のページ生成をしてしまうプログラムだったりしています。
ちょっとしたことですが、ぜひこの対応を行ってみてください。
ヘッダ情報が一緒になっていませんか??
実はこれが非常に多いミスと言いますかバグと言いますか、よくある話です。
htmlのヘッダ情報がすべてのページで同じになるという問題です。
特にTitleやDescription、Keywordsが全く同じになるという状況です。
ほぼこういう状況になると、SPAM扱いされ、ページがすべて検索エンジンから消えてしまいます。
プログラムを作っていくと、デザインが面倒になり、ヘッダ情報を共通にしたまま公開してしまうことがあるからです。
ほとんどの場合そういうことにはならないのですが、ある一部分だけはそうなっている、結果的にあるカテゴリより下がごっそり検索で引っかからなくなるというケースが起きえるのです。
ぜひ、そのようなことにならないよう、ヘッダ情報がすべて違うように作ることを心がけてください。