webサイト制作、webサイト構築を行う上で、必ず出てくるキーワード「SEO」。前回の続きだ。今回は、Google 検索エンジン最適化(SEO)スターターガイドの「サイト構造の改善」に分類されている内容から考察していこう。
サイト構造の改善では「URLの構造を改善しよう」と「ナビゲーションをわかりやすくしよう」が取り上げれている。サイト構造も検索エンジンに影響を与えるようだ。気にしないで設計するとえらいことになることが伺える。
以下、Google検索エンジン最適化(SEO)スターターガイドに書かれている詳細及び個人的に注目するポイントをまとめて整理している。Google 検索エンジン最適化(SEO)スターターガイドの補足として利用してほしい。
URLの構造を改善しよう
わかりやすいURLはコンテンツの情報を伝えやすい
コンテンツのカテゴリや、ファイル名に説明的な名前を利用することは、検索エンジンがそれらのドキュメントをクロールしやすくなることにもつながります。また、あなたのコンテンツにリンクを張りたいと思っている人にとっても簡単で、わかりやすいURLを作ることにもなります。意味のわかる単語がほとんど含まれない、極端に長く暗号めいたURLはユーザーにとって不親切なものと言えるでしょう。
「folder1/1089257/x1/0000023a.html」のようなURLはわかりにくく、不親切です。ユーザーがURLを思い出して、リンクを張るのに苦労するかもしれません。また、URLに不可解なパラメータがたくさん含まれていると、ユーザーはURLの一部が不要だと誤解してしまうかもしれません。その結果、URLの一部が削られ、リンクが適切に張られなくなる恐れがあります。
ユーザーの中にはURLの文字列をそのままリンクのアンカーテキストとして利用する人もいます。URLがページの内容と関連する単語を含んでいれば、IDや不可解なパラメータで構成されたURLに比べて、ユーザーと検索エンジンの両方にページについての情報をより多く伝えられます。
悪い例:「folder1/1089257/x1/0000023a.html」
良い例:「item/flowerarrange/gerbera/」
この例のように、URL内にわかりやすい単語を使用することで、リンクをたどる前にリンク先のページの内容が、より伝わりやすくなります。
URLは検索結果に表示される
ページのURLはGoogleの検索結果にも表示されることを覚えておきましょう。URLはページのスニペットの下に表示されます。ページタイトルやスニペットと同様、ユーザーの検索キーワードがURLに含まれていた場合、その部分が太字で表示されます。
Googleは非常に複雑な構造のURLもクロールすることができます。しかし、サイトのURLをできる限りシンプルにすることで、ユーザーにも検索エンジンにも親切なものになります。そのため動的なURLを静的なURLに書き換える努力をされるウェブマスターもいます。書き換えることに問題はないのですが、これは高度な作業であり不正確に行われてしまった場合は、クロール関連の問題を引き起こす原因となる可能性があることにご注意ください。適切なURL構造についてさらに詳細を知りたい方は、Googleと相性の良いURLの作成をご覧ください。
用語解説
- クロール:検索エンジンのソフトウェア(ボット)などが情報を収集するために、各ウェブサイトを検出すること。
- パラメータ:プログラムの動作を指定するために外部から与える情報。
- アンカーテキスト:HTML文書の中で、リンクが設定されたテキストのこと。
- ID(セッションID):システムやネットワーク通信において、アクセス中のユーザーの識別や行動管理のために与えられる情報。
- 301リダイレクト:HTTPステータスコードの1つ。サイト訪問者を指定のURLへ自動的にジャンプさせる。
- サブドメイン:ドメインより小さな分類を識別するためのドメインのこと。
ポイント
URLにコンテンツと関連した単語を使用しよう
ウェブサイトの内容と構成に関連した単語を含むURLは、そのサイトを紹介してリンクを張ろうとするユーザーにとって、より親切なものとなります。サイトの訪問者にとっても覚えやすく、リンクが張られやすくなるかもしれません。
- 不要なパラメータやセッションIDを含んだ長すぎるURLは使わない
- “page1.html”のような一般的なファイル名を選ばない
- “blume-gift-blume-gift-blume-gift.htm”のようにキーワードを過度に使わない
ディレクトリ構造を簡潔にしよう
ユーザーがサイト内のどこにいるのかわかりやすく、かつ自身でサイトのコンテンツを管理しやすいディレクトリ構造を使いましょう。また、URLからコンテンツが推測できるようなディレクトリ構造を使うようにしましょう。
- サブディレクトリを“…/dir1/dir2/dir3/dir4/dir5/dir6/page.html”のような深い階層構造にしない
- 内容と無関係なディレクトリ名を使わない
1つのページにURLは1つにしよう
ある1つのコンテンツに対して、張られるリンクのURLがユーザーによって異なると、そのコンテンツに対する評価がURLごとに分かれてしまう恐れがあります。これを防ぐために、サイト内でページをリンクするときには、常に特定のURLを使用するようにしましょう。同一のコンテンツが複数のURLによってアクセスされていることに気付いた場合は、好ましくないURLから好ましいURLに301リダイレクトの設定をすると良いでしょう。
- サブドメインとルートディレクトリから同じコンテンツにアクセスしないようにする
*例:“domain.com/page.htm”と“sub.domain.com/page.htm”- サイト内のリンクで、www.のあるバージョンと、ないバージョンのURLを混在させない
- URLの中で不必要に大文字を使わない
*ユーザーの多くはURLが小文字であると想定しているので、その方が記憶されやすいため
このあたりから、サーバーサイドで設定が必要なことが多々出てくる。特に301リダイレクトの説明はわかりにくい。もう少し詳しく見ていくと下記のドキュメントを提供してくれている。「301リダイレクト」と「Googleと相性の良いURL」だ。
301 リダイレクト
http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=93633
検索エンジンの結果で表示されるページの URL を変更する必要がある場合は、サーバー サイドの 301 リダイレクトを使用することをおすすめします。これは、ユーザーや検索エンジンが正しいページにたどり着くことを保証する最善の方法です。301 ステータス コードは、ページが新しい場所へ完全に移動したことを意味します。
301 リダイレクトが特に役立つのは次のような状況です
- サイトを新しいドメインに移動し、できるだけスムーズに移行を行いたい場合。
- ユーザーが複数の異なる URL を介してサイトにアクセスする場合。
たとえば、ホーム ページに http://example.com/home、http://home.example.com、http://www.example.com といった複数の URL でアクセスできる場合、いずれか 1 つの URL を優先的な(正規の)リンク先として設定し、301 リダイレクトによって他の URL からのトラフィックをその優先 URL に送ることができます。ウェブマスター ツールを使用して使用するドメインを設定することもできます。
- 2 つのウェブサイトを結合し、無効になった URL へのリンクが正しいページにリダイレクトされるようにしたい場合。
Apache を実行しているサーバーでホストされているウェブサイト用に 301 リダイレクトを実装するには、サーバーの .htaccess ファイルにアクセスする必要があります(アクセス権やサーバー ソフトウェアが不明な場合は、ホスティング事業者に問い合わせてください)。詳細については、Apache .htaccess チュートリアルと Apache URL Rewriting Guide をご覧ください。サイトが他のソフトウェアを実行しているサーバーでホストされている場合、詳細についてはホスティング事業者に問い合わせてください。
Google と相性の良い URL の作成
http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=76329
サイトの URL 構造はできる限りシンプルにします。
論理的 かつ人間が理解できる方法 (可能な場合は ID ではなく意味のある単語を使用) で URL を構成できるよう、 コンテンツを分類します。たとえば、航空機 (aviation) に関する情報を探している場合、http://en.wikipedia.org/wiki/Aviation のような URL であれば、見ただけで必要な情報であるかどうかを判断できます。http://www.example.com/index.php?id_sezione=360&sid=3a5ebc944f41daa6f849f730f1 のような URL 自体は、ユーザーの関心を引くことはほとんどありません。
URL に区切り記号を使用します
http://www.example.com/green-dress.html という URL の方が、http://www.example.com/greendress.html という URL よりずっとわかりやすくなります。
URL にはアンダースコア (_) ではなくハイフン (-) を使用することをお勧めします。
特に複数のパラメータを含む URL など、過度に複雑な URL は、サイト上の同じまたは同様のコンテンツを表す多数の URL を不必要に作成し、クロールの際に問題が生じることがあります。その結果、Googlebot で必要以上に帯域幅を消費したり、サイトのすべてのコンテンツをインデックスに登録できないことがあります。
この問題の主な原因
URL が不必要に多い場合、次のような原因が考えられます。
アイテム セットの追加フィルタ
多くのサイトでは、同じアイテム セットや検索結果を異なる方法で表示可能で、ユーザーは規定の条件を使用してフィルタリングできます (例: ビーチに面したホテルのみを表示するなど)。フィルタを追加して組み合わせる場合 (例: フィットネス センターがあるビーチに面したホテルのみを表示する)、サイトの URL (データの表示) の数は急増します。Googlebot が各ホテルのページにアクセスするには少数のリストがあれば十分なため、内容がわずかに異なるホテルのリストを大量に作成すると冗長になります。たとえば次のような場合です。
「割り引き価格」のホテル:
http://www.example.com/hotel-search-results.jsp?Ne=292&N=461
「割り引き価格」でビーチに面したホテル:
http://www.example.com/hotel-search-results.jsp?Ne=292&N=461+4294967240「割り引き価格」でフィットネス センターがあるビーチに面したホテル:
http://www.example.com/hotel-search-results.jsp?Ne=292&N=461+4294967240+4294967270ドキュメントの動的な生成
カウンター、タイムスタンプ、広告などによって小さな変更が生じます。
URL に含まれる問題のあるパラメータ
たとえばセッション ID により膨大な数の重複と URL が生成されます。
並べ替えパラメータ
一部の大規模なショッピング サイトでは、同じアイテムを複数の方法で並べ替えできるため、多数の URL が生成されます。たとえば次のような場合です。
http://www.example.com/results?search_type=search_videos&search_query=tpb&search_sort=relevance&search_category=25
参照パラメータなど、URL に含まれる不必要なパラメータ
たとえば次のような場合です。
http://www.example.com/search/noheaders?click=6EE2BF1AF6A3D705D5561B7C3564D9C2&clickPage=OPD+Product+Page&cat=79
http://www.example.com/discuss/showthread.php?referrerid=249406&threadid=535913
http://www.example.com/products/products.asp?N=200063&Ne=500955&ref=foo%2Cbar&Cn=Accessories.
カレンダーの問題
動的に生成されるカレンダーでは、開始日や終了日の制限がない場合、将来または過去の日付のリンクが生成されることがあります。たとえば次のような場合です。
http://www.example.com/calendar.php?d=13&m=8&y=2011
http://www.example.com/calendar/cgi?2008&month=jan
破損した相対リンク
破損した相対リンクにより、無限のスペースが生じる可能性があります。多くの場合、パスの要素の繰り返しによって生じます。たとえば次のような場合です。
http://www.example.com/index.shtml/discuss/category/school/061121/html/interview/category/health/070223/html/category/business/070302/html/category/community/070413/html/FAQ.htm
この問題の解決方法
URL 構造による問題を回避する方法は次のとおりです。
- robots.txt ファイルを使って、問題のある URL への Googlebot のアクセスをブロックすることができます。一般的には、検索結果を生成する URL などの動的な URL や、カレンダーなど無限のスペースを生成する URL へのアクセスをブロックします。robots.txt ファイルで正規表現を使用すると、多くの URL を簡単にブロックできます。
- 可能な限り、URL でセッション ID を使うことは避け、代わりに cookie を使用します。詳細についてはウェブマスター向けガイドラインをご覧ください。
- 可能な限り、不必要なパラメータを削除して URL を短くします。
- サイトに無限のカレンダーがある場合、動的に作成される将来のカレンダー ページへのリンクに nofollow 属性を追加します。
- サイトに破損した相対リンクがないかどうか確認します。
わかりやすさの追求をした結果、このようなサイトを見たことが無いだろうか?
http://www.exsample.com/わかりやすい
確かに、わかりやすい。
しかし、URLに2バイト文字を入れたとき、そのURLがシェアされると下記のようになってしまう。
http://www.exsample.com/%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%84
確かに日本語URL(マルチバイト文字URL)は日本でも定着してきている。
この内容について非常によく説明されているブログがある。ハンドルネーム: まぼろしのあじさんのブログだ。
googleは確かにこのURLの内容を理解してくれるかもしれないが、はたして下記のURLを通常ユーザーが見た場合、うまく認識してくれるだろうか。
このような場合はショートURLを使用するにするか、もしくは2バイト文字を使用しないという方向がよいと個人的には考えている。
次回は、「サイト構造の改善 ナビゲーションをわかりやすくしよう」について説明したと思う。
Google 検索エンジン最適化(SEO)スターターガイドの詳細はこちら
- Google 検索エンジン最適化(SEO)スターターガイドについて
- SEOの基礎 適切なページタイトルを付けよう
- SEOの基礎 descriptionメタタグを設定しよう
- サイト構造の改善 URLの構造を改善しよう
- サイト構造の改善 ナビゲーションをわかりやすくしよう
- XML サイトマップファイル sitemap.xmlについて
- コンテンツの最適化 質の高いコンテンツを提供しよう
- コンテンツの最適化 適切なアンカーテキストを書こう
- コンテンツの最適化 画像の利用を最適化しよう
- コンテンツの最適化 見出しタグを適切に使おう
- クローラーへの対処 robots.txtを効果的に設定しよう
- クローラーへの対処 リンクにnofollow属性を活用しよう