PHPの緊急パッチでサイトを止めるときは「503」を返す:Googleが改めて呼びかけた、検索順位を守るメンテナンス対応

By: ai-taco

ふるさと納税
アマゾンプライムセール

Googleのサーチセントラルが、PHPのパッチ適用のためにサーバーを止める運営者に向けて「503ステータスコードを返してほしい」と改めて呼びかけました。同じ日にPHPが、ログインなしで攻撃者にコード実行を許す重大な脆弱性2件の緊急修正を公開したことが背景にあります。突発的なメンテナンスで検索順位を落とさないために、押さえておきたいポイントをまとめます。

何が起きたのか

GoogleはLinkedInの投稿で、サイトを止めている間は503(Service Unavailable)を返すよう案内しました。503は「障害は一時的です」とクローラーに伝えるステータスコードで、返しておけばインデックス済みのURLが検索結果に保持されたまま作業できる、というのがGoogleの説明です。通常運転に戻すときは、200のレスポンスを返すだけで済みます。

GoogleのJohn Mueller氏もBlueskyで、計画外の更新に対応するためPHPサイトを止めるなら、タイムアウトや404、500のままにせず503を使うよう述べています。さらに、PHPの外側、たとえばDNSの向き先変更やCDNでも実現できると補足しています。

なぜ404や200のエラーページはだめなのか

  • 404を返す:ページが存在しないと受け取られ、インデックスから外れる原因になります。
  • エラーメッセージを200で返す:エラー画面そのものが通常のページとしてインデックスされる恐れがあります。Mueller氏は2013年にも同様の注意を書いています。
  • タイムアウトや500:一時的な障害かどうかが伝わらず、503ほど明確な合図になりません。

503がクロールに与える影響

Googleのクロールレートに関する文書では、500・503・429は、クロール速度を短期間で下げたいときの手段として位置づけられています。多くのURLでこれらを受け取ると、そのホスト名全体のクロール速度が下がり、エラーが減れば自動的に戻ります。503や429には、再試行の目安を伝えるRetry-Afterヘッダー(秒数またはUTCの日時)を付けることもできます。

クロールが遅くなると、新しいページの発見や既存ページの再訪問が減ります。そのため、止める時間はなるべく短くするのが基本です。

どのくらいの期間なら大丈夫か

  • Gary Illyes氏は2024年に、503が10〜15分程度で、たまに起きる程度なら問題ない旨を述べています。
  • Googleの文書は、1〜2日を超える長期の利用を推奨していません。同じURLで複数日にわたり503が続くと、そのURLがインデックスから削除される可能性があります。
  • 503を返している間は、タイトルや説明文、構造化データなどの更新をGoogleが反映できません。

実務で押さえたい対応

  1. PHPが止まっても動く場所から503を返す:CDNのルールや、DNSで切り替えた一時サーバーなど。PHPのコードで503を返す古い方法は、PHP自体が止まっていると役に立ちません。
  2. robots.txtには503を返さない:クロールそのものが止まってしまうためです。通常どおり応答させます。
  3. 1〜2日を超えるなら代替ページを用意する:200で返すインデックス可能なホームページをプレースホルダーとして置くようGoogleは案内しています。
  4. 404や200のエラーページは使わない。
  5. 復旧後は200に戻し、クロールが徐々に再開するのを待つ。

補足:古いPHPを使っている場合

PHP 8.1以前は定期的な公式アップデートの対象外です。PHPは7.4〜8.1向けに限定的なソース修正を公開していますが、自前でビルドする人向けで、ホスティング会社やサポートベンダーが独自に提供することもあります。自分の環境がどの扱いになるか、ホスト側に確認しておくと安心です。

まとめ

緊急パッチは、いつ必要になるか予測できません。だからこそ「止めるときは503、短く、robots.txtは通常どおり」という手順を、あらかじめ運用手順に入れておくことが大切です。セキュリティ対応を優先しつつ、検索結果からの脱落を防ぐために、CDNやDNS側で503を返せる準備を整えておきましょう。

参考記事

コメントする

サーチエンジンブリッジ・ブリッジロゴ
SEOの架け橋サーチエンジンブリッジ