検索結果に表示したくない一覧ページへnoindexを付けていると、相互リンクをたどって同じページを何度も取得し、クロールが終わりにくくなることがあります。Fessに、noindexページを「取得済み・インデックス対象外」として記録する修正が入りました。
インデックスしないページも訪問済みにする
従来はnoindexを検出すると、リンク先をキューへ渡した後に例外で処理を終了し、アクセス結果を保存していませんでした。キューが直近に取り出したURLを覚える枠は標準で100件なので、その範囲から外れたnoindexページは、別のページからリンクされると再取得されることがありました。
修正後はアクセス結果を保存し、indexingTarget=falseとして検索インデックスへの登録を省きます。取得した記録が残るため、同じクロールセッション内で再び候補に上がっても訪問済みと判断できます。次回以降のクロールまで永久に取得しなくなる設定ではありません。
noindexとnofollowの使い分け
HTMLなら次の指定が対象です。
<meta name="robots" content="noindex">
HTTPのX-Robots-Tag: noindexヘッダーも対象です。noindexだけなら、そのページ自体をインデックスせず、ページ内のリンク先は引き続きクロールします。リンク先もたどりたくない場合はnoindex,nofollowまたはnoneを指定します。この場合はページを訪問済みとして記録しつつ、リンクを保存・キュー登録しません。
crawler.ignore.robots.tagsの初期値はfalseで、robots指定を尊重します。既存設定でtrueにしている場合はrobots指定を無視する従来の扱いが続きます。この修正専用の新しい設定キーはありません。
クロール件数の上限に注意
noindexページもアクセス結果を保存するため、修正後はmaxAccessCountのカウント対象になります。上限を設定しているクロールでは、検索対象外の一覧ページを経由する分も含めて、目的のページまで到達できるか確認してください。
PRの検証例では、相互リンクするnoindexページの繰り返し取得が減っていますが、すべてのURLを必ず1回だけ取得する保証ではありません。404、リダイレクト、canonicalによる転送など、別の理由でアクセス結果が残らない経路は今回の変更対象外です。既存の検索文書を一括削除する機能でもありません。
適用時の確認
修正を含むFessのビルドを検証環境へ用意し、noindexだけのページとnoindex,nofollowのページで動作を比較します。アクセスログで同じURLへの取得回数を確認し、noindexページが検索結果へ出ないこと、必要なリンク先へ到達すること、件数上限に先に達していないことを確認してから運用へ反映します。
既存のnofollow維持の修正は、本文を省略する増分クロール時のリンク再利用を扱うものです。今回の変更はnoindexページを訪問済みとして記録する問題への対応で、確認すべき場面が異なります。