通常のアクセス解析では、404 エラーが発生したページ URL ではなく、表示された 404 ページ自体へのアクセスとして記録されるため、どのページで 404 エラーが発生したのかまでは分からないことが多いです。
それでは、404 not found のページを確認する方法はないのでしょうか?
いいえ、実際の生のアクセスログでは、リクエストされた具体的な URL 自体が記録されています。
404 エラーの解析
それでは、 PHP の$_SERVER['REQUEST_URI']
を利用して404 エラーが発生した際にリクエストされた URL を取得してログに残してみます。
これにより、どのページ URL に対して 404 エラーが発生したのかを特定できます。
WordPress のスケジュールイベント wp-cron によって毎日自動で実行されます。
404 エラーログを保存
file_put_contents
はログファイルにデータを書き込むための関数です。
date("Y-m-d")
で今日の日付を取得し、 YYYY-MM-DD 形式の文字列に変換します。
これを日毎のログファイル名として、 wp-content/404_errors/ディレクトリ内に 404_errors_YYYY-MM-DD.log の形式で保存します。
たとえば、 2024 年 8 月 29 日のログファイルは 404_errors_2024-08-29.log という名前になります。
これをお使いのテーマの functions.php などに記述します。
また、 404 の条件判定に WordPress の内部関数is_404()
を使わない場合はhttp_response_code() == 404
を使います。
is_404()
は WordPress のテンプレート階層を利用し、 WordPress 内で 404 エラーを判定する。
対して、http_response_code()
は WordPress 外でも機能し、 PHP のレスポンスコードに基づく判定を行います。
ログを指定期間で自動削除する
このままでは、ログが溜まり続けるため、自動削除する処理を加えておきます。
この削除処理が正常に動作していることを確認するため、定期的にログディレクトリをチェックしてください。
404 エラーの解析の意義とメリットは?
ユーザーエクスペリエンスの向上
ユーザーエクスペリエンスはユーザーがサービスを利用する際に感じる全体的な体験です。
404 エラーはユーザーのフラストレーションの原因となります。
これはサイトの信頼性を損なう要因となります。
404 エラーの解析によって、ユーザーがどのページでつまずいているかを特定し、リダイレクトを設定したり、リンク切れを修正することで、サイトの使いやすさを向上させることができます。
SEO 的要素
内部リンクや外部リンクが 404 エラーを返す場合、検索エンジンのクローラーがページを正常にインデックスできなくなる可能性があります。
意図した挙動であれば問題ありませんが、 404 エラーを適切に解析し、処理することで適切なクロールを保つことができます。
トラフィックの回復
404 エラーが発生している URL に以前は多くのアクセスがあった場合、適切なリダイレクトを設定することで、失われたトラフィックを回復できます。
外部リンクからのトラフィックを逃すことを防ぐためには、リンク切れのページを特定し、関連する新しいページに誘導することが重要です。
セキュリティリスクの把握
悪意のあるボットやハッカーがサイトの脆弱性を探すために無効な URL へのアクセスを試すことがあります。
頻繁に 404 エラーが発生している場合、それが通常のユーザーによるものか、攻撃を試みているかを判断できます。
必要に応じて防御対策を講じるための指標となるでしょう。
404 エラーログの例
わたしのサイトでの実際のログの一部を紹介します。
純粋な 404 エラーは最初の画像へのアクセスだけで、これは削除した画像ファイルへのアクセスです。
それ以外の特定のファイルやフォルダにアクセスしようとする試みはスパムまたは悪意のあるボットによるものです。
とくに、/admin/ や /wp-includes/ のようなディレクトリにアクセスは攻撃の可能性が高いため、注意が必要です。
GA4 で確認できないか?
多くのサイトで導入されている Google Analytics で 404 ページを確認することも不可能ではありません。
GA4 で 404 ページを確認するには、表示された 404 エラーページを追跡し、その前にユーザーがどのページを参照していたかを分析することが基本となります。
ただし、 GA4 は JavaScript が有効なページでのみデータを収集するため、スクリプトが実行されない状況、たとえば、サーバーレベルで 404 エラーが返された場合やクローラのボットアクセスでは、 404 エラーページがトラッキングされません。
GA4 でトラッキングできる 404 エラーはかなり限定的です。
この記事が役に立ったら「いいね」!