リンクチェック設定
SHIRASAGI にはサイト全体を非同期ジョブにてリンクチェックする機能が備わっています。
以下で書かれていることの大部分は v1.21 から利用できる機能の説明となります。
実行方法
実行方法は2つあります。画面から実行する方法とコマンドを実行する方法です。 実行するとレポートが作成されます。
画面からの実行
シラサギのCMSにログインし、左メニューを「リンクチェック>実行」とたどり、実行ボタンをクリックします。
コマンド
次のコマンドを実行します。
bundle exec rake cms:check_links site=サイト設定のホスト名 email=sys@example.co.jp
- コマンド引数
site: リンクをチェックしたいサイトを指定します。省略すると全サイトのリンクをチェックします。 - コマンド引数
email: リンクチェックのレポートを送信するメールアドレスです。省略可能で、省略するとレポートは送信されません。
レポート
シラサギのCMSにログインし、左メニューを「リンクチェック>レポート」とたどると、リンクチェックのレポートを確認することができます。 このレポートには、どんなページにどんなリンク切れがあったのかが表示されます。
管理画面のレポートと、メールで送られるレポートには差があります。 管理画面のレポートは、レイアウト部分やパーツ部分で発生しているリンク切れは表示されません。 メールで送られるレポートには、レイアウト部分やパーツ部分で発生したリンク切れを含むすべてのリンク切れが表示されます。
動作
サイトトップを起点にHTML内のリンクを再帰的に収集していきます。
収集したリンクについて、1) シラサギのページについては内部ルーティングにより取得、2) 外部ページについてはWEBサーバーより取得(open)を試み、失敗した場合にエラーとして報告します。
以下のような制限や注意点があります。
- 相手サーバーやネットワークの状況により不安定となり接続がタイムアウトしたりエラーになったりする場合があります。
- ブラウザからは正常に開くことができても、リンクチェックによるアクセスがボットと判定され失敗として報告されることがあります。
設定
次の設定が可能です。
- 除外URL設定
<a>タグや<img>タグによる個別設定- パターン登録
- タイムアウト秒数
除外URL設定: <a> タグや <img> タグによる個別設定
rel="nofollow" が設定された <a> タグのリンクは辿りません。
data-ss-rel="nofollow" が設定された <a> タグや <img> タグのリンクは辿りません。
rel="nofollow" や data-ss-rel="nofollow" を設定することで、リンクチェックの実行時間を短くしたり、
不安定な外部サイトをチェックから除外させることができます。
rel="nofollow" と data-ss-rel="nofollow" には以下のような違いがあります。
| 設定 | 紳士的なウェブクローラー | シラサギのリンクチェック |
|---|---|---|
| rel=”nofollow” | 辿らない | 辿らない |
| data-ss-rel=”nofollow” | 辿る | 辿らない |
除外URL設定: パターン登録
シラサギのCMSにログインし、左メニューを「リンクチェック>除外URL」とたどると、除外URLのパターンを登録することができます。
パターンの登録例です。なお、サイト設定のドメインに “demo.ss-proj.org” が、HTTPS が有効に設定されているものとします。
| 除外URL | 一致パターン | => | <a> タグや <img> タグのURL |
判定 |
|---|---|---|---|---|
| /kurashi/ | 完全一致 | => | https://demo.ss-proj.org/ | 一致しないのでチェックされる |
| 〃 | 〃 | => | https://demo.ss-proj.org/kurashi/ | 一致するのでチェックされない |
| 〃 | 〃 | => | https://demo.ss-proj.org/kurashi/bosai/ | 一致しないのでチェックされる |
| 〃 | 〃 | => | https://company.demo.ss-proj.org/kurashi/ | ドメインが一致しないのでチェックされる |
| /kurashi/ | 前方一致 | => | https://demo.ss-proj.org/ | 一致しないのでチェックされる |
| 〃 | 〃 | => | https://demo.ss-proj.org/kurashi/ | 一致するのでチェックされない |
| 〃 | 〃 | => | https://demo.ss-proj.org/kurashi/bosai/ | 一致するのでチェックされない |
| 〃 | 〃 | => | https://company.demo.ss-proj.org/kurashi/ | ドメインが一致しないのでチェックされる |
| //.google.com/ | 後方一致 | => | https://fonts.google.com/ | 一致するのでチェックされない |
| //.google./ | 部分一致 | => | https://fonts.google.com/ | 一致するのでチェックされない |
| 〃 | 〃 | => | https://maps.google.co.jp/ | 一致するのでチェックされない |
タイムアウト秒数
前述の WEBサーバー よりリンク先を取得する際の タイムアウト秒数 については config/cms.yml にて設定することができます。
config/cms.ymlが存在しない場合、config/defaults/cms.ymlをconfig/cms.ymlへコピーしてください。
# check_links job's timeout
check_links:
html_request_timeout: 10
head_request_timeout: 5
2つの設定の意味は:
- html_request_timeout: リンク先のHTMLを取得する際の、GETリクエストのタイムアウト秒数。v1.21 で廃止されました。v1.21以降、GETでアクセスすることはなくなりました。
- head_request_timeout: 外部ページを取得する際のHEADリクエストのタイムアウト秒数