GA4を開いたら、表示回数の上位ページに「404」が入っていた。記事は1本も消していないのに、読者はどこで行き止まりになっているのでしょうか。
この記事では、GA4で404になったURLを突き止める手順と、WordPressで301リダイレクトを設定する手順を、実際にたどった順にまとめます。
Contents
404の急増は、記事を消していなくても起こる
404の急増は、記事を消していなくても起こります。このサイトの場合、原因は以前にURLの形を変えた古い記事3本でした。
GA4で404ページを「タイトル」で探し、そこに「ページのURL」を掛け合わせれば、どの古いURLにアクセスが来ているかが分かります。あとはWordPressのプラグインで、古いURLから今のURLへ301リダイレクト(恒久的な転送)を設定すれば直ります。
GA4の表示回数の上位に、404ページが入っていた
気づいたのは、GA4の左メニュー「レポート」を開くと最初に出る「レポートのスナップショット」でした。下のほうにある「上位のページ / スクリーン」の表に、「404 -コーチングシップス - coachingships.com」という行が入っていたのです。
404ページは、ふだんなら表に出てこないはずのページです。10月1日から27日までで38回表示され、直帰率は97.4%でした。開いた人のほぼ全員が、そのまま離れていたことになります。

※画像はクリックで拡大できます
疑った「最近の記事のリンク切れ」は外れていた
ちょうど新しい記事を続けて公開していたので、最初は記事内のリンクの書き間違いを疑いました。ところが、トップページから主要な記事へのリンクは、どれも正常に開けました。
調べていくと、404になっていたのは数年前に書いた記事の古いURLでした。では、どの古いURLが404になっているのかは、どうやって突き止めればよいのでしょうか。
GA4で、404になったURLを突き止める
使うのは、GA4の「ページとスクリーン」のレポートです。404ページのタイトルで絞り込み、URLを掛け合わせる、という2段階で進めます。
手順1:404ページのタイトルを確かめる
最初に、自分のサイトの404ページにどんなタイトルが付いているかを確かめます。このタイトルが、あとでGA4を検索するときの目印になります。
- ブラウザで自分のサイトを開きます。
- アドレスバーのURLの末尾に、存在しない文字列を足して開きます(例:https://(自分のドメイン)/test-404-page/)。
- 「Not Found」や「ページが見つかりません」といった画面が出ることを確かめます。
- その画面のまま、キーボードで Ctrl+U(Macは command+option+U)を押します。ページの中身を書いた文字(ソース)が、別のタブで開きます。
- Ctrl+F(Macは command+F)で検索欄を出し、「<title>」と入れます。
- 「<title>」と「</title>」に挟まれた文字が、404ページのタイトルです。メモしておきます。
画面に大きく出ている「Not Found」は見出しで、タイトルとは別の文字です。また、ブラウザのタブにもタイトルは出ますが、タブをたくさん開いていると「404」の数文字しか見えません。ソースを開いて確かめるのが確実です。
手順を飛ばしたいときは、次の手順2で「404」と入れて検索してみてください。出てこなければ「Not Found」「見つかりません」でも試します。多くのサイトでは、どれかで404ページの行が見つかります。
このサイトでは「404 -コーチングシップス - coachingships.com」でした。タイトルに入っている「404」が、次の手順の検索語になります。
手順2:表示を「ページタイトル」に切り替えて検索する
次に、GA4で404ページの行だけを表示します。
- Google アナリティクス(analytics.google.com)を開き、自分のサイトのプロパティを選びます。
- 左メニューの「レポート」を押します。
- 「エンゲージメント」→「ページとスクリーン」を開きます(表示されないときは、「ライフサイクル」の中にあります)。
- グラフの下の表で、左上の見出しを確かめます。「ページパスとスクリーンクラス」になっていたら、横の▼を押して「ページタイトルとスクリーンクラス」に切り替えます。
- 表の上にある検索欄(虫めがねのマーク)に「404」と入れ、Enterキーを押します。
ここで一度つまずきました。見出しが「ページパス(URL)」のまま「404」で検索したため、何も出てこなかったのです。「404」はページのタイトルに入っている文字で、URLには入っていません。4番の切り替えを忘れないようにしてください。
手順3:日別のグラフで、増え始めた日を見る
404の行が出たら、表の上のグラフで、いつから増えたかを見ます。
- 画面右上の期間(日付が書かれた部分)を押します。
- 「過去7日間」を選び、「適用」を押します。
- グラフの線の上にマウスを乗せると、その日の表示回数が出ます。
このサイトでは、10月23日まではほぼ0回でした。24日から増え始め、26日と27日は1日10回を超えていました。7日間の合計は35回です。
手順4:「+」でURLを掛け合わせる
最後に、404ページが「どのURLで」表示されたのかを出します。
- 表の見出し「ページタイトルとスクリーンクラス」のすぐ右にある、青い「+」を押します。
- 出てきた一覧から「ページ / スクリーン」→「ページパスとスクリーンクラス」を選びます。
- 表に2列目が加わり、404ページが表示されたときのURLが並びます。「表示回数」の列を見ると、URLごとの回数が分かります。
結果は3本でした。1本だけで27回、全体の約8割を占め、残りは7回と1回です。

※画像はクリックで拡大できます
3本とも、URLは「/2021/02/16/記事名/」のように日付が入った形でした。記事が今どこにあるかは、次のように確かめます。
- 表に出たURLから、日付の部分(/2021/02/16/)を外します。
- 「https://(自分のドメイン)/記事名/」の形にして、ブラウザで開きます。
- 記事が表示されれば、それが今のURLです。表示されないときは、サイト内検索で記事名を探します。
このサイトでは、3本とも日付を外したURLで記事が公開されていました。では、古いURLに来た読者を、どうやって今のURLへ案内すればよいのでしょうか。
WordPressで301リダイレクトを設定する
使ったのは、無料のプラグイン「Redirection」です。古いURLと新しいURLを、1件ずつ組にして登録します。
301リダイレクトは、「このページは別の場所に恒久的に移った」とブラウザや検索エンジンに伝える転送です。Googleも、URLを変えるときはサーバー側の永続的なリダイレクトを使うよう勧めており、リダイレクトはできるだけ長く、一般的には1年以上残すよう案内しています。
手順5:Redirectionを入れて、初期設定を済ませる
まずプラグインを入れます。
- WordPressの管理画面で、左メニューの「プラグイン」→「新規追加」を押します。
- 右上の検索欄に「Redirection」と入れます。
- 名前の似たプラグインが並んで出てきます。作者が「John Godley」のものを選び、「今すぐインストール」を押します。
- ボタンが「有効化」(英語表示では「Activate」)に変わったら、もう一度押します。
続いて、初回だけ出る設定画面を進めます。
- 左メニューの「ツール」→「Redirection」を開き、セットアップを始めます。
- 「基本セットアップ」の画面で、上の2つにチェックを入れ、「次へ」を押します(それぞれの意味は下にまとめました)。
- 「既存のリダイレクトをインポート」の画面に、「WordPress permalink redirect」という項目が出たら、チェックを入れて「次へ」を押します。
- 「REST API」の画面で、表示が「良好」になっていることを確かめ、「セットアップ完了」を押します。
- 進み具合のバーが最後まで伸びたら「次へ」、最後に「準備完了です!」を押します。
2番でチェックを入れた2つは、次のような設定です。
- パーマリンクの変更を監視:今後、記事のURLを変えたときに、転送を自動で作ってくれる
- リダイレクトと404エラーのログを保存:どの古いURLにアクセスが来ているかを、管理画面で確かめられる
3つ目の「IPアドレスを記録」は、この画面では選べない状態でした。ただ、あとで確かめると、オプションの初期設定ではIPアドレスを丸ごと記録するようになっていました。この扱いは、あとの手順8で見直します。
3番で取り込んだのは、WordPressが自動で作っていた転送4件でした。以前に記事のスラッグ(URLの末尾の部分)を直したときの記録で、取り込んでも今の動きは変わりません。日付入りのURLはここには含まれていなかったので、次の手順で手で登録します。
なお、5番の画面には「進捗: %(完了)%」という崩れた表示が出ていました。日本語表示の不具合で、設定には影響ありません。
手順6:古いURLと新しいURLを1件ずつ登録する
ここからが本番です。404になっていたURLを、1件ずつ登録します。
- 左メニューの「ツール」→「Redirection」を開き、「転送ルール」の一覧を出します。
- 上にある「リダイレクトの追加」を押すと、入力欄が開きます。
- 「ソースURL」に、古いURLを入れます(例:/2021/02/16/sample-post/)。ドメインは入れず、「/」から始まる部分だけで大丈夫です。
- ソースURLの右に「スラッシュ無視」の印が付いているかを確かめます。付いていれば、URLの末尾に「/」があってもなくても転送されます。付いていなければ、右の歯車のマークから選べます。
- 「クエリーパラメータ」は、初めから入っている設定のままにします。
- 「ターゲットURL」に、今のURLを入れます(例:/sample-post/)。
- 「グループ」を「転送ルール」にします。初めは「編集済みの投稿」になっていることがあるので、▼から選び直します。
- 「リダイレクトの追加」を押します。
- 一覧に、古いURLと今のURLが2行で並び、「コード」の欄に「301」と出ていれば登録できています。
- 残りのURLも、2番から同じように登録します。
7番の「グループ」は、「編集済みの投稿」のままでも転送は動きます。ただ、そちらはプラグインが自動で作った転送の置き場所なので、手で登録したものは「転送ルール」にまとめておくと、あとで見返しやすくなります。

※画像はクリックで拡大できます
同じ形の古いURLが大量にあるなら、正規表現(文字の並びのパターンを指定する書き方)で1本にまとめる方法もあります。ただしGoogleは、多数の古いURLをトップページなど関係の薄い1ページへまとめて転送するのは避けるよう案内しています。記事ごとに、正しい行き先へ飛ぶ形にしておくのが安心です。
手順7:古いURLを開いて、ヒット数を確かめる
最後に、転送が本当に動くかを確かめます。
- ブラウザのシークレットウィンドウを開きます(Chromeなら Ctrl+Shift+N、Macは command+shift+N)。ログインした状態やキャッシュの影響を受けずに、読者と同じ状態で確かめるためです。
- 古いURLを、ドメインから全部入れて開きます(例:https://(自分のドメイン)/2021/02/16/sample-post/)。
- アドレスバーが今のURLに切り替わり、記事が表示されれば成功です。
- Redirectionの一覧に戻り、ページを読み込み直します。
このサイトでは、その行の「ヒット数」が0から1に増え、「前回のアクセス」に日付が入っていました。転送が働き、その記録も取れているという合図です。

※画像はクリックで拡大できます
転送が動くことは確かめられました。では、1週間たって、404は本当に減ったのでしょうか。
1週間後、404はゼロになり、転送は30回働いた
結果は、GA4の404が35回からゼロになり、古いURLから来た読者は30回、記事へ転送されていました。あわせて、Redirectionの404ログから、直さなくてよい404があることも分かりました。
GA4の404は、35回からゼロになった
手順2〜4と同じやり方で、GA4を見直しました。期間は、設定した10月28日を外し、設定後の7日間(10月29日〜11月4日)にしています。
- 「ページとスクリーン」の右上の期間を押し、「カスタム」を選びます。
- 開始日と終了日を選び、「適用」を押します。
- 見出しを「ページタイトルとスクリーンクラス」にして、「404」で検索します。
設定前の7日間(10月21日〜27日)は35回でした。設定後の7日間は、404の行が1件も出てきませんでした。
古いURLからの30回は、記事へ転送されていた
ただ、404がゼロになった理由は2通り考えられます。転送が働いたのか、それとも古いURLへのアクセスそのものが止まったのか、です。
見分けるには、Redirectionの転送ルールの一覧で「ヒット数」を見ます。11月4日の時点で、2021年の記事は24回、2024年の2本は3回と4回でした。2021年の記事の24回には、手順7の確認で開いた1回が入っているので、読者のアクセスは合わせて30回です。

※画像はクリックで拡大できます
「前回のアクセス」も、11月1日〜3日と最近の日付でした。古いURLへのアクセスは止まっておらず、転送がそのたびに読者を記事へ届けていたことになります。
Redirectionの404ログは、ボットの探索で埋まる
一方で、Redirectionの「404 エラー」タブを開くと、1週間で8,000件を超える記録が並んでいて驚きました。
中身を見ると、ほとんどが「/phpinfo.php」や「/_environment」といった、サーバーの設定ファイルが外から見えていないかを試すアクセスでした。同じ相手から、同じ時刻に連続して来ています。ボット(自動で巡回するプログラム)による探索です。

※画像はクリックで拡大できます
ブログにはこうしたファイルを置いていないので、404を返すのが正しい動きです。リダイレクトを設定する必要はありません。「/.well-known/traffic-advice」というアクセスも、Chromeの先読みの機能が確かめに来ているもので、心配はいりません。
GA4の404がゼロなのに、Redirectionには8,000件以上ある。この違いは、数え方の違いから来ています。GA4は、ブラウザでページを開き、計測のしかけが動いたアクセスだけを数えます。Redirectionは、サーバーに届いたアクセスを、ボットも含めてすべて記録します。直すべきなのは、GA4に出てくる、読者が実際に踏んでいるURLです。
手順8:ログの保存期間とIPの記録を見直す
404ログが1週間で8,000件を超えるなら、そのままためておくとデータベースが重くなります。あわせて、IPアドレスの記録も見直しました。
- 「ツール」→「Redirection」を開き、上のタブから「オプション」を押します。
- 「転送ログ」と「404 ログ」の保存期間を、どちらも「1週間」にします。
- 「IP ロギング」を、初期設定の「フル IP ロギング」から「匿名 IP(最後の部分をマスクする)」に変えます。
- 「ログ」の欄にある「リダイレクトヒットと最終アクセス日時を追跡」は、チェックを入れたままにします。
- 画面のいちばん下にある「オプションを更新」を押します。

※画像はクリックで拡大できます
IPアドレスを丸ごと残すと、同じ相手が何度も来ているかを確かめやすくなります。その一方で、ふつうの読者のIPアドレスもすべてデータベースに残ります。IPアドレスは、ほかの情報と組み合わせると、人を特定する手がかりになることがあります。
このサイトでは、IPアドレスを見てアクセスを止めるような使い方はしないので、末尾を伏せる「匿名」を選びました。迷惑なアクセスを本気で止めたくなったら、セキュリティ用のプラグインや、レンタルサーバーの機能を使うのが向いています。
なお、転送ルールの一覧にある「ヒット数」は、ログとは別に数えられています。ログを1週間で消しても、ヒット数は残ります。
ここまで、調べるのも設定するのも生成AIに相談しながら進めました。AIに任せきりにしなかったのは、どの場面だったのでしょうか。
生成AIと進めて、人が確かめたのは3つの場面だった
GA4の調査はChatGPTに、WordPressの設定はClaudeに相談し、画面のスクリーンショットを見せながら一手ずつ進めました。調べる速さはAIで大きく上がりましたが、設定に入れる前に、人が確かめた場面が3つありました。
AIが示したURLに、余計な文字が付いていた
ChatGPTが示した今の記事のURLには、末尾に「?utm_source=chatgpt.com」という文字列が付いていました。どこから来た読者かを記録するための目印です。
そのまま転送先に入れると、転送のたびにこの目印が付いてしまいます。そこで、「/記事名/」の部分だけを入れました。
予想と違う画面が出たら、そこで止めた
インポートのあと、一覧には思っていたのとまったく違う4件が並びました。先へ進まずに中身を見ると、以前にスラッグを直したときの記録だと分かりました。
「404」で検索して何も出てこなかったときも、画面をAIに見せて、切り替える場所を確かめました。画面が説明と違うときは、その場で止めるのが、結果的にいちばんの近道でした。
なぜ10月24日から増えたのかは、まだ分からない
検索結果に古いURLが残っている、外部のサイトからリンクされている、ボット(自動で巡回するプログラム)が来ている、などの候補はあります。どれなのかは、まだ確かめられていません。
次の手がかりは、GA4で見られる参照元(どこから来たか)のデータです。では、URLを変えたときに、最初から何をしておけばよかったのでしょうか。
筆者の考え:URLを変えるなら、転送も同じ日に設定する
URLは、読者や他のサイトが記事にたどり着くための住所です。中身が残っていても、住所が変われば届きません。引っ越しで転送届を出すように、URLを変えるときは転送の設定まで含めて1つの作業として扱う必要がありました。
これは個人ブログに限った話ではありません。コーポレートサイトのリニューアルや、社内ポータル・規程集の移行でも同じことが起こります。
たとえば社内ポータルを移行すると、メールやマニュアルに貼られた古いリンクが切れ、社員が規程にたどり着けなくなります。SEとして人事システムの導入に関わっていたころも、移行で見落としやすいのは、こうした「外から指されている入口」でした。
Googleも、サイトを移転するときの手順として、古いURLと新しいURLの対応表を作ることを挙げています。もし自社サイトや社内ポータルの移行を担当することがあれば、対応表と転送の設定を、移行作業の一部に最初から入れておくのはいかがでしょうか。今回の記録が、参考にしてもらえる場面があれば幸いです。
【セルフチェック】404に気づいて直すための6項目
自分のサイトで404が起きていないかを確かめるためのチェックリストです。気になった項目だけ拾ってもかまいません。各項目に、確かめるときの手がかりを一言ずつ添えました。
-
GA4の表示回数の上位に、404ページが入っていないか見た「レポート」の最初の画面にある「上位のページ / スクリーン」で、タイトルに「404」がある行を探す
-
自分のサイトの404ページのタイトルを知っている存在しないURLを開き、Ctrl+Uでソースの「<title>」を見る
-
404になったURLの一覧を出せる「ページタイトル」で絞り込み、「+」でページパスを掛け合わせる
-
過去に記事のURLの形を変えたことがあるか、把握している日付入りのURLや、日本語のスラッグを英語に直した記事がないか
-
転送を設定したあと、古いURLを実際に開いて確かめたシークレットウィンドウで開き、アドレスバーが切り替わるかを見る
-
プラグインのログの保存期間とIPアドレスの記録を確かめた初期設定のままだと、ログが増え続け、IPアドレスも丸ごと残ることがある
用語メモ
本記事に登場する専門用語をまとめました。▶ をクリックすると説明が表示されます。
▶ 404エラー
開こうとしたURLにページが見つからないときに返される知らせです。読者には「ページが見つかりません」という画面が表示されます。
▶ 301リダイレクト
ページが別のURLへ恒久的に移ったことを伝え、読者を新しいURLへ自動で送る仕組みです。Googleは、検索結果に新しいURLを表示するための方法として位置づけています。
▶ パーマリンク
WordPressで、記事ごとに付くURLのことです。「設定」→「パーマリンク」で、日付を入れるか、記事名だけにするかなどの形を選べます。
▶ スラッグ
URLの末尾にある、記事ごとの名前の部分です。たとえば「/sample-post/」の「sample-post」がスラッグにあたります。
▶ 直帰率
GA4では、エンゲージメントのなかったセッションの割合を指します。10秒以上見た、2ページ以上を見た、などのどれにも当てはまらない訪問がどのくらいあったかを示します。404ページの直帰率が高いのは、読者が行き止まりで引き返していることを表しています。
出典・参考情報
※本記事は、筆者のサイトで2026年10月に行った調査と設定の記録です。GA4やWordPress、プラグインの画面・項目名は、バージョンや設定によって異なる場合があります。設定を変える前には、サイトのバックアップを取っておくことをおすすめします。