リンク切れチェッカー
URLを入力すると、クローラーが内部リンクをたどり(最大200ページ)、失敗するすべてのリンクを報告します: 404 などの 4xx、5xx、タイムアウト、DNSエラー — クロール中に見つかった内部リンクと、HEADリクエストで確認した外部リンク(最大100件)。切れたリンクにはそれを指しているページとアンカーテキストが付くので、何かが壊れていると知るだけでなく、リンクかページを修正できます。CSVでダウンロード。24時間を超えて保存されるものはありません。
クロールは当社サーバーで実行されます: 1秒に1リクエスト、robots.txt を遵守、JavaScript は実行しません。保持するのは開始URLとこの要約のみで、24時間後に削除されます。
仕組み
1. 当社のクローラー(InsighthackerzBot、1秒に1リクエスト、JavaScriptなし)はまず robots.txt とそこに宣言されたサイトマップを取得し、指定したURLから内部リンクを幅優先でたどります — 同一ホストのみ、www ありなしは同じサイトとして扱います 2. 上限: 1回あたり50・100・200ページ、1ページ2 MB、1リクエスト15秒、1URLあたりリダイレクト5回。robots.txt が当クローラーのUAに禁止するURLはスキップして計数し、nofollow 指定のページは取得しますがそのリンクはたどりません 3. すべてのHTMLページは on-page SEOチェッカーと同じエンジンを通ります: title、description、H1、canonical、robots ディレクティブ、語数、alt のない画像 — 警告と失敗はページごとに保持し、HTMLは保持しません 4. クロール中に切れていると判明した内部リンク(4xx、5xx、タイムアウト)はリンク元ページとともに一覧化。外部リンクは HEAD のみで確認(サーバーが HEAD を拒否した場合は GET を1回)、1回あたり最大100件、nofollow リンクは除外 5. 結果は当社サーバー上の1ジョブです: 開始URLと要約のみを保持し、24時間後に失効し、他の用途には一切使いません 6. 応答が 4xx か 5xx、またはリクエストが失敗(タイムアウト、DNS、TLS、接続拒否)した場合にリンク切れとみなします。内部ページのリダイレクトはたどり、ここではなく監査タブで報告します
リンク切れと、チェッカーがそれをどう見つけるかについて
リンク切れとは、リンク先がもう応答しないリンクです: ページが削除・改名されたための404、410、背後のサーバーが落ちているための5xx、あるいはドメインが失効して応答がまったくないケース。訪問者にとっては行き止まりで、検索エンジンにとってはクロールの無駄であり、小さいながらもサイトが保守されていないというシグナルです。内部のリンク切れは完全にあなたが直すもので、たいてい誰も反映しなかったURL変更が原因です。外部のリンク切れは他人が起こし、あなたが気づくものです。
チェッカーは意図的に2種類を別々に扱います。内部リンクはクロール中に発見されます — クローラーがぶつかった 4xx/5xx ページはすべてリンク切れで、どのページがそこへ送ったかクローラーはすでに知っています。外部リンクはクロールしません。一意の外部URLごとに HEAD リクエストを1回(サーバーが HEAD を拒否すれば GET)、ホストごとに1秒に1回、1回の実行で最大100件です。他人のサーバーに負荷をかけたり、あなたのクロール予算をそこに使ったりせずに、失効ドメインと削除ページを捕まえるにはこれで十分です。
リンク元ページは、切れたURL自体より重要です。古いブログ記事1本からリンクされた404は5秒で直せますが、同じ404がフッターにあれば全ページに存在し、リダイレクトに値します。表にはリンクごとに最大5つのリンク元ページとアンカーテキストが載り、リンクが本来どこを指すはずだったかを推測するのにたいてい十分です。
「切れている」リンクの一部は切れていません。ボット対策のあるサイトは未知のクローラーの HEAD リクエストに 403 や 429 を返します。ログインが必要なページへのリンクは 401 を返します。HEAD に 405、GET に 200 を返すサーバーもあり、チェッカーは GET で再試行して対処します。有名サイトでの 403 はほぼ確実にサイトがクローラーを拒否しているのであって、ページが死んでいるのではありません — リンクを削除する前にブラウザで開いてください。
よくある質問
- 動いているリンクが 403 や 429 と表示されるのはなぜですか?
- リンク先サイトがページではなく当社のリクエストを拒否したのです。Cloudflare などのサービスは未知のクローラーに 403 でチャレンジを課し、レート制限は 429 を返します。チェッカーはチャレンジを解けませんし、試みもしません。URLをブラウザで開いてください。読み込めればリンクは正常で、そのステータスはサイトのボットポリシーです。
- 内部と外部のリンク切れの違いは何ですか?
- 内部リンクは自分のホストを指し、クロール中に見つかります。クローラーがページを取得してエラーを受け取り、リンクがどこから来たか知っています。外部リンクは他所を指し、それぞれ軽いリクエスト1回で確認します。内部はリダイレクトかリンクの更新で直し、外部はリンクを更新するか、アーカイブされたコピーを探すか、削除します。
- 一部の外部リンクが確認されなかったのはなぜですか?
- 他サイトへの礼儀を守り、ジョブを数分以内に収めるため、1回の実行では外部確認を一意のURL100件・ホストごとに1秒1リクエストに制限しています。チェッカーは何件スキップしたかを表示します。rel="nofollow" のリンクはまったく確認しません。外部オプションのチェックを外すと完全にスキップされ、クロールが速くなります。
- チェッカーはリダイレクトをたどりますか?
- 内部ページでは、はい — 動作するページに301するURLへのリンクは切れていませんが、チェーンを短くできるようリダイレクトはサイト監査に表示されます。外部リンクではリダイレクトは動作中とみなし、それ以上はたどりません。
- 切れていると分かっているリンクをチェッカーが見つけないのはなぜですか?
- そのリンクを含むページがクロール対象外だった(ページ上限外、robots.txt で禁止、開始URLからリンクをたどって到達不能)か、リンクが JavaScript で挿入されているかです — クローラーは配信されたHTMLを読み、スクリプトは実行しません。監査タブでどのページがクロールされたか確認できます。
- どのくらいの頻度で確認すべきですか?
- 外部リンクは自然に劣化します — ほとんどのサイトで年に数パーセント — ので、四半期ごとの実行で大半を捕まえられます。内部リンクはURL変更で切れます。移行、リニューアル、一括リネームの直後に確認してください。200ページを超えるサイトには全体をクロールできるツールが必要で、このツールはサンプルを提供します。