リンク切れチェッカー

開始アドレスを入力してください。クローラーがサイトを1ページずつたどり、出会ったリンクと画像をすべて試し、失敗したものを掲載ページと一緒に持ち帰ります。

The crawl stops at 100 pages or 600 requests, whichever comes first. A small site is done in seconds, a large one in a few minutes. Keep this tab open while it runs.

例: wikipedia.org

リンクは誰も触らなくても切れる

リンクを張るとき、あなたは他人のサーバーや、来年名前を変えるかもしれないファイルを当てにしています。ページが保存しているのはアドレスだけです。リンク先が移動し、ドメインが更新されず、メディアライブラリから画像が削除されても、エディターで見るページは以前とまったく同じです。気づくのはクリックした人だけです。

このゆっくりとした劣化はリンク切れ(link rot)と呼ばれ、止まることはありません。Pew Research Centerの2024年の調査では、2013年に存在したウェブページの38%が、10年後にはアクセスできなくなっていました。自分のサイトの状態を知るには、誰かがすべてのリンクを試す必要があります。人間にはうんざりする作業ですが、プログラムには簡単な仕事です。

巡回の進め方

  1. 開始ページを取得し、robots.txtを読みます。拒否されたパスには触れません。
  2. data-srcの遅延読み込み画像も含め、すべての<a href>と<img src>を集めます。mailto:、tel:、javascript:のリンクは飛ばし、#fragmentは取り除きます。
  3. 同じホスト上のページへのリンクは、順番に読むためにキューに入れます。example.comとwww.example.comは1つのサイトとして数えます。他のサブドメインは別です。
  4. それ以外(他のサイト、PDF、画像、ダウンロード)はテストするだけです。本文なしでステータスだけを求めるHEADリクエストから始め、サーバーがHEADを拒否したら通常のGETに切り替えます。
  5. リダイレクトは手動で、最大5回までたどります。6回目、または自分自身にリダイレクトするアドレスはループとして報告します。

巡回は100ページを読むか、600リクエストに達したら止まります。1つのホストへの同時接続は最大4本、応答は6秒待ち、各アドレスはリンクされている回数にかかわらず1回だけテストします。同じパスに5種類を超えるクエリ文字列が付いて現れたら、それ以上の変種は無視します。そうしないと、カレンダーや絞り込みページに予算をすべて食われてしまいます。

4つのリストの読み方

リンク切れ
リンク先がエラーを返したか、応答しませんでした。404と410はページがなくなったことを意味します。500〜504はサーバーの不調を示し、一時的なこともあります。「ドメイン名が見つかりません」は、サイト全体が閉鎖されたことが多いです。「無効なSSL証明書」は、ページの前にブラウザーが警告を表示するという意味です。
壊れた画像
原因は同じですが、訪問者に見えるのは空の枠か、壊れた画像のアイコンです。
内部リダイレクト
自分のページへのリンクで、リダイレクトを経由しないと届かないものです。壊れてはいませんが、クリックのたびに往復が1回余計にかかり、いつか誰かがリダイレクトを消すかもしれません。
手動で確認
リンク先が401、403、429、999を返しました。ロボットを拒否しているか、ログインを求めています。LinkedIn、Facebook、ボット対策の背後にある多くのサイトがこうします。決着をつけるには、自分でリンクを開く必要があります。

各行には、そのアドレスが出てくるページを最大5つ表示し、繰り返し出てくる失敗ほど上に並べます。フッターのリンク切れは全ページに現れますが、直すのは1か所です。

見つかったものの直し方

  • 自分のページを移動した。リンクを修正し、他から来る人のために恒久リダイレクトを追加します。Apache:Redirect 301 /old-page/ /new-page/。nginx:location = /old-page/ { return 301 /new-page/; }。
  • 他のサイトがページを移動した。そのサイト内で新しいアドレスを探します。内容がなくなっていたら、Wayback Machine(web.archive.org)のコピーにリンクするか、リンクを削除します。
  • 画像がない。同じ名前でアップロードし直すか、ページを編集します。
  • 内部リダイレクト。リンクのアドレスを、レポートに表示された最終的なアドレスに置き換えます。

見えるのは、サーバーが送るHTMLに含まれるリンクだけです。JavaScriptで作られるメニュー、CSSの背景画像、srcsetの変種、動画、スクリプトはテストせず、ログインが必要なページも対象外です。アンカーも検証しないので、/page#pricesへのリンクは/pageがあれば合格になります。また、存在しないページに200を返すサイトは、どのクローラーからもリンク切れを隠してしまいます。ソフト404テストでその状態を検出できます。

よくある質問

リンク切れはSEOに悪影響がありますか?

リンク切れが少しあるくらいでサイトの順位は下がりません。失うのは別のものです。内部リンクが切れているとクローラーがその先のページにたどり着けず、そのリンクが渡していた評価が失われ、エラーに当たった訪問者は去っていきがちです。

ブラウザーでは開けるリンクが切れていると報告されるのはなぜですか?

リンク先が、あなたと同じようにはクローラーを扱っていないからです。自動化されたリクエストをブロックしている、6秒の制限内に応答できない、ブラウザーではすでに例外を設定した証明書を使っている、あなたが持っているCookieを必要としている、などが考えられます。プライベートウィンドウでリンクを開いて比べてみてください。

クローラーはrobots.txtを守りますか?ブロックするには?

はい。MissWrenchBotと名乗り、その名前用に書かれたグループに従います。なければ*のグループに従います。締め出すには、User-agent: MissWrenchBotの後にDisallow: /を追加します。詳しくはクローラーのページをご覧ください。

サイトが100ページを超えています。どうすればいいですか?

巡回は、入力したアドレスから始めて、見つけた順にページを読みます。ブログの一覧、次に商品カタログ、というように入口を変えて何度か実行すれば、サイトの別々の部分をカバーできます。

結果はどのくらい保存されますか?

24時間です。巡回中、ブラウザーのアドレスバーはその巡回へのリンクに変わります。期限が切れるまで、ブックマークしたり同僚に送ったりできます。

404と410の違いは何ですか?

404 Not Foundは、今そのアドレスには何もないという意味です。410 Goneは、ページが意図的に削除され、戻ってこないという意味です。自分のサイトのリンクなら、直し方は同じです。