Domain 20 / 225
内部リンクは Googlebot のクロール経路と PageRank 配分を決める
内部リンク の要点
内部リンクは Googlebot のクロール経路と PageRank 配分を決める。必ず `<a href>` HTML 要素で書く(routerLink などカスタム属性は認識されない)。アンカーテキストは「こちら」ではなくリンク先内容を表すキーワードを含める
なぜこれを学ぶか
内部リンクは サイト内 PageRank の配分とクロール経路を決める唯一の手段。 良いコンテンツでも、内部リンクが届いていないと Googlebot が発見せずインデックスされないし、サイト内の重要ページを認識してもらえない。
メディア・EC・大規模サイトのリプレイス、サイトリニューアル時に必須の知識。
学ばないと起きること
| よくある事故 | 被害 |
|---|---|
<a routerLink> <span onclick> などカスタム属性で内部リンク | Googlebot が認識せず、サイト内のクロール経路が途絶える |
| 重要ページへの内部リンクが少ない | PageRank が分散して上位に上がりにくい |
| アンカーテキストが「こちら」「詳しくはこちら」ばかり | リンク先のコンテキストが Google に伝わらず評価が弱い |
| サイトのフッターに全ページへのリンクを置く | リンクの希薄化、関連性ある内部リンクの重みが減る |
| 削除したページへの内部リンクを放置 | クロールエラーが増えてクロール効率が落ちる |
| ハブページ(カテゴリページ)からの導線がない | 個別記事が孤立、新規記事のインデックスが遅れる |
学ぶメリット
- サイト内 PageRank の配分を意図的に重要ページへ集約できる
- 新規ページのインデックス速度を内部リンク設計で上げられる
- 商談で「内部リンクのアンカーテキスト最適化」を即答できる
- リプレイス時に内部リンク網を再設計できる
仕組み
Google が認識する内部リンクの形式
公式に <a href> HTML 要素のみが確実に認識される。
| OK(Google が認識) | NG(認識されない可能性) |
|---|---|
<a href="https://example.com"> | <a routerLink="/products"> |
<a href="/products/category/shoes"> | <span href="https://example.com"> |
<a href="./products"> | <a onclick="goto('https://example.com')"> |
<a href="/products" onclick="track()"> | <button onclick="navigate('/products')"> |
<a href="/products" class="pretty"> | <div data-link="/products"> |
JavaScript で動的に挿入する場合も最終的に <a href> 形式である必要がある。
URL の解決
href の値は実際に Web アドレスとして解決可能なものにする:
| OK | NG |
|---|---|
<a href="https://example.com/stuff"> | <a href="javascript:goTo('products')"> |
<a href="/products"> | <a href="#" onclick="..."> |
<a href="/products.php?id=123"> | (URL を持たないリンク全般) |
nofollow との関係
リンクをクロールさせたくない場合は rel="nofollow"(または sponsored / ugc)を付ける。
リンクが認識されないことと、認識された上でクロール対象外にすることは別。
キー概念
アンカーテキストの最適化
リンク先のコンテキストを Google に伝える役割。
| OK(リンク先内容を表す) | NG(汎用すぎる) |
|---|---|
| 「canonical の正しい設定方法」 | 「こちら」 |
| 「サイトマップ送信の手順」 | 「詳しくはこちら」 |
| 「301 リダイレクトの実装例」 | 「リンク」 |
| 「Core Web Vitals の改善方法」 | 「Read more」 |
ただし過剰最適化(同じ KW を機械的に繰り返す / リンク先と内容が一致しないアンカー)は避ける。
リンクの位置と重み
Google は「ページ内のどこにリンクがあるか」も評価する:
- 本文内(コンテキストに沿った自然なリンク)= 評価高
- ナビゲーション(グローバルメニュー)= 中
- フッター = 低
「フッターから全ページにリンクを張る」と希薄化するので、本文内の自然な内部リンクを優先。
内部リンクの設計パターン
ハブ&スポーク
カテゴリトップ(ハブ)から個別記事(スポーク)へリンク。スポークからハブへも逆リンク。
/category/seo/ ← ハブ
├ /seo/canonical/ ← スポーク
├ /seo/robots-txt/ ← スポーク
└ /seo/noindex/ ← スポーク
サイロ構造
トピック別に内部リンクを閉じる構造。サイロ内では密に内部リンクし、サイロ間は限定的にする。
SEO サイロ: SEO 記事同士で密に内部リンク
AEO サイロ: AEO 記事同士で密に内部リンク
(サイロ間は最小限)
コンテキスト リンク
本文中で関連性が高い別記事へ自然にリンク。 新規記事公開時に、既存の関連記事から新記事への内部リンクを追加するのが定石。
孤立ページ(オーファンページ)の検出
どこからも内部リンクされていないページ = Googlebot が発見しにくい。
検出方法:
- Search Console の「ページ」レポートで「インデックス未登録」を確認
- Screaming Frog などのクローラーで内部リンク数 0 のページを抽出
- サイトマップにあるが内部リンクがない URL を特定
対処:
- 関連カテゴリページから内部リンクを追加
- サイトマップに含めて Search Console から送信
よくある誤解
| よくある誤解 | 実際のところ | 出典 |
|---|---|---|
<a routerLink> は SPA フレームワークの標準だから Google も認識 | しない可能性が高い。<a href> 形式が必要 | リンクのベスト プラクティス |
| アンカーテキストは「こちら」で十分 | リンク先のコンテキストを伝えられない、KW を含む自然なアンカーが推奨 | 同上 |
| 内部リンクの数が多いほど SEO に強い | 数より質。ナビ過剰 / フッター羅列は希薄化のリスク | 同上 |
onclick だけのナビゲーションでも Google が認識 | 確実ではない。<a href> を必ず付ける | 同上 |
| すべての内部リンクは絶対 URL(https://...)で書く | 相対 URL(/products)も OK、サイト内ならどちらでも認識 | 同上 |
| nofollow を内部リンクに使えば PageRank を制御できる | 自分サイト内では推奨されない、配分が崩れる | 外部リンクの修飾 |
| JavaScript で挿入したリンクは Google が見落とす | <a href> 形式なら認識する | JavaScript SEO |
| 内部リンク密度が高いほど評価される | 密度より関連性。トピックに合わない内部リンク量産は逆効果 | リンクのベスト プラクティス |
実務での適用
新規記事公開時のチェックリスト
- 関連する既存記事から新記事へ内部リンクを追加
- 新記事から関連カテゴリページへリンク
- 新記事から最も近い親ハブページへリンク
- アンカーテキストは新記事の主要 KW を含む自然な文言
Next.js / React での内部リンク
// OK(Next.js Link は内部実装が <a href>)
import Link from "next/link";
<Link href="/products/dress">商品ページ</Link>
// NG(router.push は <a href> を持たない)
<button onClick={() => router.push("/products/dress")}>商品ページ</button>
大規模サイトのオーファンページ対策
- Screaming Frog で全 URL の内部リンク数を取得
- リンク数 0 のページをリスト化
- 関連カテゴリ・関連記事ページから内部リンクを追加
- 削除候補なら 410 Gone を返す
アンカーテキスト改善のリライト例
NG:「詳しくはこちらを参照してください」 → 「こちら」がアンカー
OK:「canonical の設定方法は別記事で詳しく解説しています」 → 「canonical の設定方法」がアンカー
トラブル別の対処
| 症状 | 確認すべきこと |
|---|---|
| 新規記事がインデックスされない | 内部リンクから到達できるか、サイトマップに含まれているか |
| 重要ページの順位が上がらない | 内部リンクが少なくないか、フッターからの希薄なリンクばかりでないか |
| Search Console「ページが見つかりませんでした(404)」が増える | 削除ページへの内部リンクが残っていないか |
| カテゴリ内の関連記事が認識されていない | サイロ / ハブ&スポーク構造ができているか |
公式ソース
自己テスト
Q1. Google が確実に認識する内部リンクの HTML 形式は?
<a href="..."> HTML 要素。<a routerLink> <span onclick> <button onclick> などカスタム属性は認識されない可能性がある
Q2. JavaScript で動的に挿入したリンクは Google に認識されるか?
最終的に <a href> 形式であれば認識される。
カスタム属性(routerLink など)のままでは認識されない可能性
Q3. アンカーテキストは何を書くのが推奨か?
リンク先の内容を表す自然なキーワードを含む文言。「こちら」「詳しくはこちら」のような汎用語より、「canonical の設定方法」のような具体的な表現
Q4. 内部リンクは絶対 URL(https://...)で書く必要があるか?
ない。サイト内なら相対 URL(/products)でも OK。Google はどちらも解決して認識する
Q5. 自分サイト内のリンクに rel=nofollow を付けるのは推奨されるか?
推奨されない。サイト内 PageRank 配分が崩れる。 クロール制御が必要なら robots.txt の Disallow を使う
Q6. ページ内のどこにリンクがあるかは Google の評価に影響するか?
する。本文内(コンテキストに沿ったリンク)が最も評価高、グローバルナビは中、フッターは低
Q7. オーファンページ(孤立ページ)とは何か?
どこからも内部リンクされていないページ。Googlebot が発見しにくく、インデックスが遅れる原因。 関連カテゴリ・関連記事から内部リンクを追加して解消する
Q8. ハブ&スポーク構造とサイロ構造の違いは?
ハブ&スポーク: カテゴリトップ(ハブ)から個別記事(スポーク)へ放射状にリンク サイロ: トピック別に内部リンクを閉じる構造、サイロ内は密、サイロ間は限定的
これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。