WordPressでブログを運営していたら、ある日突然「Broken Link Checker」からメールが届いた。
「サイトで新たに10個のリンクエラーを検出しました」
10個も?
しかも、確認してみると自分の書いたPS Vitaのおすすめソフト記事にエラーが集中している。
この記事には、公式サイトへのリンクだけでなく、駿河屋のアフィリエイトリンクも設置している。
まさか全部リンク切れになったのか?
検索流入も気になるし、せっかく設置したアフィリエイトリンクが機能していないなら結構困る。
ところが、実際に調べてみるとリンク切れではないものまでエラーとして検出されていた。
今回は、Broken Link Checkerで表示された「403 Forbidden」「302 Moved Temporarily」の意味と、実際に私が行った対処方法をまとめておく。
同じエラーが表示されて焦っている人の参考になれば嬉しい。
Broken Link Checkerから突然10件のリンクエラー通知が届いた
今回エラーが検出されたのは、以前公開したPS Vitaのおすすめゲームを紹介する記事。
この記事では、ゲームの公式情報だけでなく、中古ソフトを購入できる駿河屋へのリンクも紹介している。
だから、アフィリエイトリンクがまとめて切れていたら厄介だ。
届いたメールには、次のような内容が記載されていた。

メールだけでは具体的な原因が分からないので、WordPressの管理画面を確認することにした。
管理画面では11件のリンクエラーを検出
確認した時点で、Broken Link Checkerの管理画面には以下の数字が表示されていた。
| 項目 | 検出件数 |
|---|---|
| すべて | 351件 |
| リンクエラー | 11件 |
| 警告 | 2件 |
| リダイレクト | 35件 |
メールでは新たに10件と通知されていたが、管理画面では合計11件のリンクエラーが表示されていた。
正直、思ったより多い。
何か設定を間違えたのか、それともリンクを貼りすぎたのか。
ただ、ここで焦ってリンクを削除しなくてよかった。
11件のリンクエラーがあるからといって、11件すべてのリンクが使えなくなっているとは限らない。
実際、今回のケースはそうだった。
403 Forbiddenはリンク切れとは限らない
まず確認したのが「403 Forbidden」と表示されていたリンク。

今回、エラーになっていたのは以下の公式サイトだった。
- ソニーの公式ブログ
- セガの公式サイト
特にセガのリンクは、PS Vitaの記事で紹介していた『クレイジータクシー:ワールドツアー』に関するページだ。
ステータスには「403 Forbidden」と表示されている。
403 Forbiddenとは?
403は、サーバーがアクセスを拒否したことを表すHTTPステータスコード。
ページが削除されたことを意味する「404 Not Found」とは違う。
例えば、Webサイトによっては自動巡回するプログラムやボットのアクセスを制限している。
その場合、普通のブラウザでは問題なく閲覧できても、Broken Link Checkerからのアクセスだけが拒否されることがある。
実際にプラグインの公式サポートでも、外部サイトがリンクチェック用のボットをブロックして403エラーになった事例が報告されている。
実際にアクセスしてみたら普通に開いた
そこで、403と表示されたソニーとセガのリンクをブラウザから開いてみた。
結果は、どちらも正常に表示された。
なんだ、普通に開くじゃないか。
少なくとも今回の確認では、読者がリンク先を閲覧できない状態にはなっていなかった。
もちろん、ブラウザで一度開けたからといって、すべての環境で正常とは限らない。
ただし、403と表示されたからといって、すぐにリンクを削除する必要はないということは分かった。
駿河屋のアフィリエイトリンクが302エラーになった原因
次に気になったのが、駿河屋のアフィリエイトリンクだ。
今回検出されたリンクには、次のようなURLが並んでいた。
「https://affiliate.suruga-ya.jp/modules/af/af_jump.php?...」
そしてステータスは、
302 Moved Temporarily
となっている。
こちらもエラーとして表示されていたため、最初はアフィリエイトリンクの仕様が変更されたのかと思った。
しかし、実際にクリックすると、問題なく駿河屋の商品ページへ移動できた。
302 Moved Temporarilyとは?
302は、アクセスしたURLから別のURLへ一時的に転送することを示すHTTPステータスコード。
これをリダイレクトという。
アフィリエイトリンクでは、成果計測などのために最初のURLを経由し、商品ページへ移動する仕組みが使われることがある。
例えば、今回の駿河屋の場合は次のような流れだ。
- ブログに設置した駿河屋のアフィリエイトリンクをクリック
- 駿河屋のアフィリエイト用URLへアクセス
- 302によって商品ページへ転送
- 読者が商品ページを閲覧
つまり、途中で302が返されること自体は異常ではない。
重要なのは、その後ちゃんと目的の商品ページへ移動できるかどうか。
今回のリンクでは、実際に商品ページまで移動できた。
少なくとも今回の302表示は、リンクが使えなくなったことを意味していなかった。
301と302の違い
ちなみに、Broken Link Checkerでは「301」というステータスも表示される。
それぞれの意味は以下のとおり。
| ステータス | 意味 |
|---|---|
| 301 Moved Permanently | 恒久的なリダイレクト |
| 302 Found / Moved Temporarily | 一時的なリダイレクト |
| 403 Forbidden | アクセス拒否 |
| 404 Not Found | ページが見つからない |
301と302は、別のURLへ移動するための仕組みであり、それだけでリンク切れとは判断できない。
一方、404は指定したURLが見つからないことを表す。
ただし、404でも単にページが移動しているだけの場合があるので、可能なら移転先を探した方がいい。
Broken Link Checkerで誤検出されたリンクの対処方法
今回、実際に行った対処方法を紹介する。
使用したのはBroken Link Checkerのローカル版管理画面。
プラグインのバージョンや使用しているチェック方式によって、画面表示が違う場合もある。
① WordPressのリンクエラー一覧を開く
WordPressの管理画面から「Link Checker」→「ローカル版[旧]」を開く。
また、環境によっては「ツール」→「リンクエラー」などからアクセスできる。
画面上部の「リンクエラー」を選択すると、問題があると判定されたリンクを一覧で確認できる。
ここで見るべきなのが「ステータス」と「ソース」。
ステータスには403や302などの結果が表示され、ソースにはリンクが設置されている記事名が表示される。
これで、どの記事のどのリンクが問題になっているのかを把握できる。
② 実際にリンク先を開いて確認する
次に、エラーとして検出されたリンクを自分で開いてみる。
今回のように403と表示されても、ブラウザでは普通に閲覧できる場合がある。
302の場合も、最終的な移動先まで確認する。
ここで大事なのは、単にページが開くかどうかだけではない。
- 本来の目的のページに移動しているか
- 商品リンクなら該当する商品が表示されるか
- 別の関係ないページに転送されていないか
- エラーページになっていないか
特にアフィリエイトリンクは、トップページへ移動できたとしても、本来紹介したかった商品が表示されない場合がある。
そのため、商品ページまで確認しておきたい。
③ 正常なリンクなら「リンクエラーではない」を選択
リンクが正常に機能していることを確認できたら、Broken Link Checkerの一覧に戻る。
対象のリンクにマウスを合わせると、操作メニューが表示される。
そこで「リンクエラーではない」を選択する。
今回、駿河屋のアフィリエイトリンクは商品ページへの移動を確認したうえで、この操作を行った。
これでプラグインに対して、リンクが壊れていないことを伝えられる。
ただし、この操作はリンク先のサーバーを修理するものではない。
あくまでBroken Link Checker側の誤判定に対応する操作だ。
また、正常なリンクが一時的な不具合でエラーになることもあるため、必要なら「再確認」も利用するといい。
絶対に避けたいのが、確認せずに「リンク解除」を押してしまうこと。
本当に必要なリンクや、正常に機能しているアフィリエイトリンクまで外してしまう可能性がある。
リダイレクトが35件あったけど、これも問題なのか?
リンクエラーを確認していたところ、もうひとつ気になった。
Broken Link Checkerの「リダイレクト」には35件ものリンクが表示されていたのだ。

これも全部修正した方がいいのか?
実際に一覧を確認すると、以下のリンクが含まれていた。
- A8.netのアフィリエイトリンク
- 楽天アフィリエイトのリンク
- infotopのアフィリエイトリンク
- AppleやLenovoの公式サイト
- 自分のブログ内にある古い形式のURL
アフィリエイトリンクについては、リンク先への転送が正常に行われていれば基本的に問題ない。
ただ、自分のブログの内部リンクでは少し気になるものもあった。
例えば、https://zen-aku.com/?p=333 のようなWordPressの投稿ID形式のURLだ。
これは301で現在のURLへ転送されていたが、ブログ内のリンクなら最初から正式なURLを指定しておいた方が分かりやすい。
そのため、今回の確認を機に内部リンクも整理することにした。
リダイレクトが多いから悪いのではなく、必要のない転送が残っていないかを確認することが大切なのだと思う。
Google Search Consoleの404エラーとは別の問題だった
実は今回、最初に疑ったのはGoogle Search Consoleのインデックス登録エラーだった。
ブログ記事が404になっているのではないかと思い、Search Consoleで該当記事をURL検査してみたのだ。
ところが、表示された結果は、
「URLはGoogleに登録されています」
だった。
HTTPSにも問題はなく、パンくずリストも有効。
少なくとも、今回調べたPS Vita記事自体はGoogleにインデックス登録されていた。
その後、Search Consoleの404エラー一覧も確認したが、こちらに表示されていたのは別のURLだった。
つまり、今回調べていた問題は大きく分けて2種類あったことになる。
| 確認ツール | 確認していた内容 |
|---|---|
| Google Search Console | 自分のサイトのURLがGoogleにどう認識されているか |
| Broken Link Checker | 記事内などに設置されたリンクが正常に応答するか |
もちろん、どちらでも404というステータスが登場することはある。
ただし、検査対象が違う。
Broken Link Checkerに403や302が出たからといって、記事そのものがGoogleの検索結果から消えるわけではない。
今回、ここを混同していたから余計に焦ってしまった。
なお、Search Consoleで別途検出された404については、今回の対応で全部解消したわけではない。
それぞれ別に確認する必要がある。
まとめ|Broken Link Checkerのエラー通知が来ても、まずは自分で開いてみる
今回、Broken Link Checkerからリンクエラーのメールが届いたことで、ブログ内のリンクをまとめて確認することになった。
結果として、ソニーとセガの公式サイトは403と表示されていたものの、実際には閲覧できた。
駿河屋のアフィリエイトリンクも302と表示されていたが、商品ページへ正常に移動できた。
そして、リダイレクト一覧についても、ほとんどがアフィリエイトリンクなどの通常の転送だった。
今回の教訓はシンプルだ。
エラーが表示されたからといって、慌ててリンクを削除しないこと。
Broken Link Checkerは便利なプラグインだが、表示された結果が必ずしも読者の閲覧状況と一致するとは限らない。
まずはリンク先を開き、目的のページへ移動できるかを確認する。
そのうえで、誤検出なら「リンクエラーではない」を選択し、本当に切れているリンクだけを修正すればいい。
私の場合は、そもそもSearch Consoleの404と混同していたこともあり、なかなか焦ってしまった。
まあ、こういうトラブルがあると、自分が普段どれだけ外部リンクに頼っているかも分かる。
それにしても、せっかく設置したアフィリエイトリンクを、正常なのに自分で消していたらと思うと少し怖い。
同じ通知が届いた人は、まずリンクをひとつ開いてみてほしい。
案外、普通に使えるかもしれない。
