Simply Static × CloudFrontで「正しい」404エラーを返すためのワークアラウンド

AWS
記事内に広告が含まれています。
スポンサーリンク
スポンサーリンク

はじめに

前回はsitemap.xmlの静的化について触れましたが、今回はさらに一歩踏み込んで、Google AdSense審査や運用の健全性に欠かせない『ads.txtの設置』と『404エラーの適切な処理』について解説します。

ads.txtについて

WordPressで使用出来るテーマは大体広告掲載に対応しているものが多いと思います。
せっかくなので、テーマの広告設定を活かして対応しました。

1)広告に対応したテーマでads.txtを設定
 このサイトで使っているCocoonでは、Cocoon設定の広告タブの中で設定出来ます。
 実際の設定方法は各テーマのマニュアルを参照してください。

2)SimplyStatic ADDITIONAL URLSにads.txtを追加
 以前の記事で紹介したsitemap.xmlの対応と同じようにads.txtを出力するよう追加設定して、静的コンテンツとして出力を実行します。

3)静的コンテンツが出力されたら、アップロードします
 アップロードしたら、実際のURLにアクセスして表示確認しましょう。

404エラー対応

CloudFrontの設定は404などのエラーでも200を返してしれっとインデックスを表示しておりました。これはSEO的にもボット対策としても不健全です。そこで、『WordPressで200 OKのふりをして404ページを出力させ、CloudFrontで404として再定義する』という力技を実装しました。

1)固定ページとして、404ページを作成

  • ポイント
    • 固定ページとして作成することで、SimplyStaticによってページが出力が可能
    • noindex/nofollowを設定
      編集画面下部のSEO設定エリアにあるチェックを有効にしておきましょう。
      これによりsitemap.xmlの対象外となります。

2)CloudFrontの設定変更
 AIアシスタントを活用して、terraformコードを修正。以下のカスタムエラー設定を追加。
 修正後、Applyして無事に404エラーの対応が無事確認できました。
 S3をオリジンにしている場合、権限設定(OAC/OAI)によってはファイルが存在しない時に404ではなく403(Forbidden)が返されることがあります。そのため、403もセットで404ページへマッピングするのが、S3静的ホスティングにおける『鉄壁の配管』です。

  # 403 → 404として独自の404ページを返答
  custom_error_response {
    error_code            = 403
    response_code         = 404 # 404でレスポンスする
    response_page_path    = "/404-error/index.html"
    error_caching_min_ttl = 300
  }

  # 404 → 独自の404ページ
  custom_error_response {
    error_code            = 404
    response_code         = 404
    response_page_path    = "/404-error/index.html"
    error_caching_min_ttl = 300
  }

思わぬ伏兵(トラブル)

 404対応を完璧にした結果、思わぬ伏兵が現れました。Simply Staticで出力対象外だった『月別アーカイブ』が、意図せず全て404になってしまったのです。静的サイト化において、動的なURL階層をどこまで維持するか……今回は『不要なリンクを削ぎ落とす』という判断で、サイドバーのウィジェットからアーカイブをパージしました。

まとめ

  • 404エラー対応が無事実装できた。
    • sitemap.xmlの対象からも除外できていた。
  • ads.txt出力は問題なし。
    • 無事にAdSense側で認識(承認済みのステータスを確認)
  • 少し寂しくなったがアーカイブメニューを削除して表面的にはリンク切れはなくなったはず。

今回の対応でさらに「WordPressの静的サイト化」の完成度が充実してきたなと実感できました。
あとは無事に審査が通るか祈るばかりです。
ではでは。