Link checker

コンテンツからハイパーリンクを抽出してHTTPレスポンスコードを評価することで、定期的にリンク切れをチェックし、結果を管理画面 > レポート > リンク切れに表示します。

linkchecker
17,436 sites
78
drupal.org

インストール

Drupal 11, 10 v2.1.0
composer require 'drupal/linkchecker:^2.1'
Drupal 9 v2.0.1
composer require 'drupal/linkchecker:^2.0'

概要

Link checkerモジュールは、Drupalサイトの包括的なリンク切れ検出と管理機能を提供します。Entityが保存される際に設定されたコンテンツFieldからリンクを抽出し、リモートサーバーにHTTPリクエストを送信してレスポンスコードを評価することで、これらのリンクを定期的にチェックします。

このモジュールは、ハイパーリンク、画像、音声、動画、iframe、埋め込みコンテンツなど、様々なHTML要素からの抽出をサポートしています。恒久的に移動したリンク(301リダイレクト)を自動修復したり、設定可能な失敗チェック回数のしきい値を超えた後、リンク切れ(404エラー)を含むコンテンツを非公開にすることができます。

すべてのリンク切れは、管理画面 > レポート > リンク切れでアクセス可能な一元化されたレポートに表示され、管理者はリンクのステータス、エラーメッセージ、失敗回数、関連コンテンツを確認できます。このモジュールはDrupalのCronシステムと統合してバックグラウンド処理を行い、コマンドライン操作用のDrushコマンドを提供します。

Features

  • コンテンツ保存時にテキストField、リンクField、および様々なHTMLタグ(a、area、audio、video、img、iframe、embed、object)からリンクを抽出
  • 設定可能な間隔(1〜90日)でHTTP HEAD/GETリクエストを使用してリンクステータスを定期的にチェック
  • サーバー過負荷を防ぐため、ドメインごとの制限付きで同時HTTP接続(2〜128同時)をサポート
  • フィルタリングとページネーション付きで/admin/reports/broken-linksからアクセス可能なリンク切れレポートViewを提供
  • 設定可能な失敗しきい値後、コンテンツ内のURLを更新することで301リダイレクトされたリンクを自動修復
  • 設定可能な失敗しきい値後、404リンク切れを含むコンテンツを自動的に非公開化
  • デフォルトのDrupal User-Agentをブロックするサイトに対応するための設定可能なUser-Agentヘッダー
  • コンテンツタイプのFieldごとに選択的スキャンを可能にするField単位の設定
  • 設定可能なURLタイプフィルタリングで内部リンクと外部リンクの両方のチェックをサポート
  • リンクチェック中にHTTPリクエストヘッダーをカスタマイズするためのイベントをディスパッチ
  • コマンドラインでコンテンツを分析しリンクをチェックするためのDrushコマンドを提供
  • 失敗回数、最終チェックタイムスタンプ、エラーメッセージを含むリンクチェック履歴を追跡
  • Drupal 6/7から現在のバージョンへの設定の移行をサポート
  • 特定のドメインをチェックから除外するためのURLブラックリスト(例:example.comの予約済みドメイン)

Use Cases

コンテンツ品質監査

サイトコンテンツの定期的な監査を実行して、利用できなくなった可能性のある外部リンク切れを特定します。すべてのテキストFieldとリンクFieldをスキャンするようにモジュールを設定し、適切なチェック間隔(例:週次)を設定し、コンテンツ品質を維持するためにリンク切れレポートを定期的に確認します。

自動リンク修復

「恒久的に移動したリンクを更新」を「3回の失敗チェック後」に設定して、恒久的に移動したリンクの自動修復を有効にします。これにより、外部サイトが適切な301リダイレクトを提供する場合、手動介入なしでコンテンツが新しいURLを使用するように自動更新されます。

品質管理のためのコンテンツ非公開

「ファイル未検出エラー時にコンテンツを非公開」を「3回のファイル未検出エラー後」などのしきい値に設定して、永続的なリンク切れを含むコンテンツの自動非公開を設定します。これにより、問題を確認して修正する間、ユーザーがリンク切れのあるコンテンツを見ることを防ぎます。

画像とメディアリンクの検証

<img>、<audio>、<video>タグからの抽出を有効にして、埋め込みメディアファイルがまだアクセス可能かどうかを確認します。これは、ユーザー生成コンテンツや外部ソースからインポートされたコンテンツを持つサイトに特に有用です。

SEOメンテナンス

リンク切れレポートを使用して、SEOに悪影響を与えるリンク切れを特定して修正します。検索エンジンは多くのリンク切れを持つサイトにペナルティを課すため、定期的な監視は検索ランキングの維持に役立ちます。

移行検証

別のシステムからコンテンツを移行した後、「リンクデータをクリアしてコンテンツのリンクを分析」を使用してすべてのリンクを抽出し、'drush linkchecker:check'を実行して、移行されたすべてのリンクが機能していることをすぐに確認します。

Tips

  • 控えめな設定から始める - 最初は<a>タグの抽出のみを有効にし、必要に応じて拡張する
  • 一時的な障害に対応しないよう、自動修復と自動非公開には「3回の失敗チェック後」を使用する
  • 外部サーバーの過負荷を避けるため、ドメインごとの接続制限はデフォルトで2に設定されている
  • 予約済みドキュメントドメイン(example.com、example.net、example.org)はRFC 2606に従ってURLブラックリストに常に保持される
  • 編集履歴を維持するため、自動修復を有効にする前にコンテンツタイプ設定で新しいリビジョンを有効にする
  • すべてのリンクが適切にインデックスされていることを確認するため、モジュールをアップグレードした後に'drush linkchecker:analyze'を実行する
  • 大規模サイトでは、影響を最小限に抑えるため、オフピーク時間帯にDrush Cronでリンクチェックを実行することを検討する

Technical Details

Admin Pages 3
Link checker /admin/config/content/linkchecker

Link checkerモジュールのリンク抽出、チェック動作、エラー処理設定を構成します。このページでは、管理者がスキャンするHTMLタグの制御、チェック間隔の設定、同時接続の構成、リンク切れに対する自動アクションの定義ができます。

リンク切れレポート /admin/reports/broken-links

HTTPステータスコード、エラーメッセージ、失敗回数を含むすべての抽出されたリンクを表示・管理します。ステータスコード、リンクタイプ、またはコンテンツでフィルタリングできます。クリックして関連コンテンツを表示または編集できます。

リンクを編集 /admin/config/content/linkcheckerlink/{linkcheckerlink}/edit

個別のリンクEntityの設定を編集します。リクエストメソッドの変更や、特定のURLのリンクチェックの有効化/無効化ができます。

権限 4
リンク切れレポートにアクセス

サイト全体のすべてのリンク切れを表示するグローバルリンク切れレポートにユーザーがアクセスできるようにします。

自分のリンク切れレポートにアクセス

自分のコンテンツ内のリンクのみを表示するユーザー固有のリンク切れレポートにユーザーがアクセスできるようにします。

Link checkerを管理

抽出オプション、チェック間隔、エラー処理を含むLink checker設定をユーザーが管理できるようにします。これは制限付き権限です。

リンク設定を編集

リクエストメソッドやチェックステータスなど、個別のリンク切れ設定をユーザーが編集できるようにします。

Hooks 5
hook_entity_insert

Entityが作成されたときにトリガーされます。Link checkerは設定されたFieldからリンクを抽出し、linkcheckerlink Entityを作成します。

hook_entity_update

Entityが更新されたときにトリガーされます。Link checkerはリンクを再抽出し、linkcheckerlink Entityを更新/作成し、孤立したリンクを削除します。

hook_entity_delete

Entityが削除されたときにトリガーされます。Link checkerは関連するlinkcheckerlink Entityを削除し、Queueエントリをクリーンアップします。

hook_cron

Cron実行中に呼び出されます。Link checkerはリンク抽出のためにインデックスされていないEntityを処理し、HTTPチェックのためにリンクをQueueに入れます。

hook_form_field_config_form_alter

Field設定フォームを変更してLink checker設定を追加します。「リンク切れをスキャン」チェックボックスとエクストラクター選択を追加します。

Drush Commands 3
drush linkchecker:analyze

すべての設定されたFieldからURLを抽出してコンテンツのリンクを再分析します。モジュールのアップグレードまたは設定変更後に推奨されます。

drush linkchecker:check

Queueに入れられたリンクを処理し、HTTPステータスをチェックします。リンクは設定された間隔に基づいてチェックされます。

drush linkchecker:clear

すべてのリンクデータをクリアしてコンテンツを再分析します。警告:カスタムリンク設定は削除されます。

Troubleshooting 6
リンクがリンク切れとして報告されているがブラウザでは機能する

一部のサーバーはデフォルトのDrupal User-Agentをブロックします。User-Agent設定をFirefoxやEdgeなどのブラウザのUser-Agentに変更してみてください。

内部リンクがすべてリンク切れとして報告される

Cronがlocalhostではなく正しい公開サイトURLで呼び出されていることを確認してください。ベースパス設定を構成するか、Drushコマンドに--uriパラメータを渡してください。

リンクが抽出されない

各コンテンツタイプのField設定で「リンク切れをスキャン」が有効になっていることを確認してください。リンク抽出設定で適切なHTMLタグが有効になっているかチェックしてください。

Cron中にリンクがチェックされない

リンクは設定された間隔に基づいてチェックされます。新しいリンクが最初にQueueに入れられます。最近のログメッセージでLink checkerのアクティビティを確認してください。'drush linkchecker:check'でチェックを強制できます。

自動修復が不正なURLを作成する

301修復はリモートサーバーが提供するリダイレクト先を信頼します。サイトが不正なリダイレクトを提供する場合は、自動修復機能を無効にして手動でリンクを更新してください。

リンクチェック中にサーバー負荷が高い

「同時接続数」をより低い値(例:2または4)に減らして、同時HTTPリクエストとサーバーリソースの使用量を減らしてください。

Security Notes 5
  • 「Link checkerを管理」権限は制限付きとしてマークされている - 信頼できる管理者にのみ付与する
  • 代理アカウント設定は適切な権限を持つユーザーを使用すべきだが、自動コンテンツ変更のセキュリティへの影響を考慮する
  • 自動修復機能は外部サイトからの301リダイレクトを信頼するため、悪意のあるリダイレクトによって不要なURLが挿入される可能性がある
  • ブラックリスト内のURLは抽出されるがチェックされない - コンテンツ内では引き続き表示される
  • モジュールは外部URLにHTTPリクエストを送信するため、コンテンツに特別に作成されたURLが含まれている場合、リモートサーバー上でアクションをトリガーするために使用される可能性がある