リンクとエラー
ウェブサイトのリンク切れを修正する方法(新たなリンク切れを防ぐコツも紹介)
リンク切れが発生する原因、見つけ方、更新・リダイレクト・削除のどれを選ぶかの判断基準、そして再発を防ぐ方法を解説します。
このページの内容
リンク切れとは、役に立つ場所にたどり着けないリンクのことです。リンク先のページが削除または移動された、サーバーがエラーを返す、ドメインがもう存在しない、といった場合に起こります。訪問者にとっては行き止まりです。検索エンジンのクローラーにとっては、サイト内をたどる経路がそこで途切れることになり、その先にあるページを発見しにくくなります。
リンク切れは、ある日突然まとめて起こる障害ではありません。ページ名の変更、商品の販売終了、他サイトの構成変更などに伴って、少しずつ増えていきます。このガイドでは、リンク切れの見つけ方、それぞれへの対処の決め方、そして新たに発生させない方法を説明します。
何がリンク切れにあたるのか
- 404 Not Found または 410 Gone:そのアドレスにページが存在しません。最もよくあるケースです。
- 5xx サーバーエラー:ページは存在するものの、恒久的に、あるいは断続的に、サーバーが配信に失敗します。
- 応答がまったくない:ドメインの有効期限が切れている、DNS の名前解決に失敗する、リクエストがタイムアウトする、といった場合です。
- ソフト404:ページには「見つかりません」と表示されているのに、サーバーが
200 OKを返します。そのため、ツールや検索エンジンが実在するページとして扱ってしまうことがあります。 - プレースホルダーリンク:ページへのリンクに見える要素に
href="#"やjavascript:void(0)が設定されているものです。技術的には何も壊れていませんが、訪問者はどこにも移動できません。 - 読み込めないリソース:404 を返す画像、スクリプト、スタイルシートです。リンクではありませんが、原因は同じで、ページを同じくらい目に見える形で壊します。
リンクが切れる理由
- ページが削除された、またはURLスラッグが変更されたのに、誰もリダイレクトを設定しなかった。
- リニューアルや CMS の移行でURL構造が変わった。たとえば、すべての記事に
/blog/が追加された、.htmlが外された、などです。 - 誰かがリンクを手入力して間違えた。
../pricingのような相対リンクが、そのリンクを含むページの移動によって機能しなくなった。staging.example.comのようなステージング環境やローカル開発環境のアドレスへのリンクが、公開コンテンツに紛れ込んだ。- リンク先の外部サイトがページを削除または移動した。こうした「リンクの腐敗(リンクロット)」は自分では制御できないため、定期的な確認が必要です。
リンク切れの見つけ方
すべてを示してくれる情報源は一つもないので、いくつかを組み合わせましょう。
- 主要なページをリンクチェッカーで確認する:Rudra の無料リンク切れチェッカーは、実際のブラウザでページを開き、同じサイト内の他のページを指すリンクを集めて、そのうち最大12件(ナビゲーションのリンクを優先)にリクエストを送り、エラーステータスを返すものや応答のないものを検出します。さらに、他のウェブサイトへのリンクの最初の5件をテストし、自サイトのスクリプト、画像、フォントのうち読み込みに失敗したものを報告し、ページ上の JavaScript エラーとコンソールエラーを一覧表示します。
- サイト全体をクロールする:1ページだけのチェックでは、3クリック先にあるリンク切れは見つかりません。デモページから開始できる Rudra のサイトクロールは、クロールするページ全体にわたって内部リンクをたどり、各リンク先のステータスコードを記録して、切れた内部リンクをサイト全体について報告します。プレースホルダーの
#リンクもあわせて報告します。無料プランでは、1回のスキャンにつき最大10ページをクロールします。 - Google Search Console を確認する:「ページのインデックス登録」レポートには、Google がクロールを試みて「見つかりませんでした(404)」が返されたURLが一覧表示されます。この中には他のウェブサイト上のリンクに由来するものもあり、それは自サイトをクロールしても見つけられません。
- アクセス解析やサーバーログを確認する:404 ページの閲覧数を参照元ページとあわせて見ると、実際の訪問者がどのリンク切れをたどっているのかがわかります。
リンク切れを修正する手順
まず、リンク切れをリンク先のURLごとにグループ分けします。削除された1つのページが何十ものリンク切れの原因になっていることはよくあり、リンクを1つずつ編集するより、リンク先を1回直すほうが早く済みます。そのうえで、リンク先ごとに次の4つの対処法から1つを選びます。
1. リンクを更新する
コンテンツが新しいアドレスにまだ存在し、リンクを含むページを自分で管理しているなら、リンクを編集して新しいURLを直接指すようにします。内部リンクにはこれが最善の対処法です。自サイト内のリンクをリダイレクトに頼ってはいけません。リダイレクトのたびに往復の通信が1回増えますし、最終的なURLを直接指すリンクのほうがクローラーにとってもわかりやすいからです。
2. 恒久的なリダイレクトを追加する
古いURLが他のウェブサイトからリンクされていたり、ブックマークや検索結果に残っていたりする場合は、最も内容の近いページへ恒久的にリダイレクトします。設定方法をいくつか紹介します。
- Apache(
.htaccessまたはバーチャルホスト):Redirect 301 /old-pricing /pricing - nginx:
location = /old-pricing { return 301 /pricing; } - Next.js(
next.config.js):async redirects() { return [{ source: '/old-pricing', destination: '/pricing', permanent: true }]; }。permanent: trueを指定すると、Next.js は 308 を送信します。これはリクエストメソッドを維持する恒久的なリダイレクトです。 - Netlify 形式のリダイレクトファイル(
_redirects):/old-pricing /pricing 301 - WordPress:サーバーの設定を編集できない場合は、リダイレクト用のプラグインか、ホスティングサービスのリダイレクト設定を使います。
リダイレクト先は、古いページを本当に置き換えるページにしてください。存在しなくなったURLをすべてトップページに送ると訪問者を混乱させますし、Google はそうした関連性のないリダイレクトを結局ソフト404として扱うことがあります。
3. リンクを差し替える、または削除する
切れてしまった外部リンクについては、相手のサイト内でそのページの移動先を探します。ページがなくなっている場合は、同じ内容を扱っている別の信頼できる情報源にリンクするか、リンクを削除して、文章が自然に読めるように整えます。Internet Archive の Wayback Machine を使えば、元のページに何が書かれていたかを確認できるので、代わりのリンク先を探す助けになります。
4. あえて 404 または 410 を返す
コンテンツが完全になくなり、代わりになるものもない場合は、404(あるいは「恒久的に削除された」ことを示す 410)が正しい応答です。自サイトからそのページへのリンクを削除し、404 ページが訪問者の次の行動を助けるものになっているか確認しましょう。検索ボックスと主要なセクションへのリンクを置くのが効果的です。
最後に整理する
- 読み込めないリソースも同じ方法で修正する:画像、スクリプト、スタイルシートへのパスを直すか、参照そのものを削除します。
- リダイレクトチェーンを短くする:
/aが/bにリダイレクトされ、それがさらに/cにリダイレクトされるなら、/aもサイト内のリンクも直接/cを指すようにします。Rudra の SEO チェッカーは、テストしたURLに長いリダイレクトチェーンがあると指摘します。 - 再チェックする:チェッカーをもう一度実行して修正を確認し、大がかりな整理をしたあとは再クロールします。
存在しないページが本当に 404 を返すようにする
親切な「ページが見つかりません」というメッセージを表示していても、サーバーがそれと一緒に 200 OK を返しているのでは不十分です。ステータスコードは、ブラウザの開発者ツール(「ネットワーク」タブを開いて再読み込み)か、ターミナルで curl -I https://example.com/this-page-does-not-exist を実行して確認します。200 と表示されたら、サーバーまたはフレームワーク側で修正してください。たとえば Next.js の App Router では、notFound() を呼び出すと、not-found ページが 404 ステータスで表示されます。
新たなリンク切れを防ぐ方法
- URLを変更する前にリダイレクトを計画する:リニューアルや移行の際は、すべての旧URLと新URLの対応表をスプレッドシートで管理し、公開と同時にリダイレクトを有効にします。
- 見た目だけの理由でスラッグを変えない:きちんと機能しているURLには、少しだけ見栄えの良いURLよりも価値があります。
- CMS の内部リンク選択機能を使う:URLを貼り付ける代わりにこの機能を使えば、ページが移動してもリンクが自動で更新されます。
- URLの形式を統一する:小文字にそろえ、末尾のスラッシュの有無をどちらかに決めて、リダイレクトで徹底します。
- チェックを定期的に行う:ほとんどのサイトには月1回が適しています。加えて、リリースやコンテンツ移行のたびにも実施しましょう。
よくある間違い
- 切れたURLをすべてトップページにリダイレクトする。
- 実際には恒久的な移転なのに、一時的な 302 リダイレクトを使う。
- 内部リンクを、最終的なURLではなくリダイレクト元を指したままにしておく。
- 他のサイトからリンクされているページを、リダイレクトを設定せずに削除する。
- 相手のサイトが自動チェッカーをブロックしているせいで指摘されただけの外部リンクを「修正」してしまう。
- エラーとして表示されないからといって、プレースホルダーの
#リンクを放置する。
サイト全体のリンク切れをチェックする
URLを入力すると、Rudra がページをクロールし、切れた内部リンクを SEO、パフォーマンス、アクセシビリティの問題とあわせて報告します。
よくある質問
リンク切れは SEO に悪影響がありますか?
Google は、404 エラーはウェブではごく普通のことであり、それ自体がサイトの他の部分の順位を下げることはないと説明しています。実際の損失は、訪問者の不満、行き止まりになるクロール経路、そして削除されたページを指す他サイトからのリンクの価値が失われることです。切れた内部リンクは修正し、外部からリンクされている削除済みページにはリダイレクトを設定しましょう。
404 と 410 の違いは何ですか?
404 はページが見つからなかったことを意味し、410 は意図的に削除されていて今後も戻らないことを意味します。どちらも、検索エンジンに対して、時間をかけてそのURLを除外するよう伝えます。利用しているプラットフォームで設定しやすいほうを使ってかまいません。重要なのは、存在しないページに 200 を返さないことです。
切れたURLはすべてリダイレクトすべきですか?
いいえ。リダイレクトするのは、本当の意味で代わりになるページがあり、他サイトからのリンク、ブックマーク、検索からの流入といった価値が残っているURLです。それ以外は 404 を返すままにして、自サイトからのリンクを削除します。
リンク切れはどのくらいの頻度で確認すべきですか?
ほとんどのサイトでは月1回が妥当な目安です。加えて、リニューアル、移行、コンテンツの大幅な変更のあとにも確認しましょう。リンク集のように外部へのリンクが多いサイトでは、外部のページが予告なく消えるため、より頻繁にチェックすると効果的です。
Rudra のリンク切れチェッカーは外部リンクも確認しますか?
一部を確認します。1ページのチェックでは、自サイトのページへのリンクを最大12件と、他のウェブサイトへのリンクの最初の5件をテストします。自動アクセスを拒否するサイトは多いため、他のウェブサイトからの 403 や 429 といった応答は「判定不能」として扱われ、切れた外部リンクは参考情報としてのみ報告されます。サイトクロールは、クロールするページ全体にわたって内部リンクを確認します。指摘されたリンクは、変更する前に必ずブラウザで確かめてください。