PHP脆弱性でサイトを止めるなら503を Googleが検索への影響を避ける方法を案内

PHPの脆弱性でサイトを止めるなら503を返す。404やタイムアウト、200のメンテナンス画面は避ける

PHPの重大な脆弱性(CVE-2026-109618、CVE-2026-109619)の修正のためにサイトを一時的に止めるなら、エラーやタイムアウトのままにせず、HTTPステータスコード「503」を返してほしい。Google検索のJohn Mueller氏は日本時間10月22日0時26分、Blueskyの投稿でこう呼びかけました。2時40分には、Google検索セントラルも公式LinkedInで「503を忘れずに」と投稿しています。どちらも新しいルールではなく、Googleがこれまで公式ドキュメントで案内してきた内容のおさらいです。何を返すと検索にどう響くのか、何日までなら大丈夫なのか、サイトの運営者がすることを公式ドキュメントで確かめました。

この記事の要点

  • PHPの脆弱性の修正でサイトを止めるときは、503(Service Unavailable)を返すのがGoogleのおすすめです。Mueller氏は、タイムアウト、404、500のままにしないよう呼びかけました。
  • Googleのドキュメントでは、404や410などを返したURLは検索のインデックスから外れます。503や500は、すでに登録されているURLをしばらく残しますが、続けば最終的には外れます。
  • 503で止めてよいのは「数時間、長くても1〜2日」が目安です。同じURLで数日続くと、インデックスから外れることがあります。それより長く止めるなら、503ではなく、200で返すお知らせ用のトップページを置くよう案内しています。
  • タイムアウトやDNSのエラーは5xxと同じように扱われ、アクセスできない状態が続くと数日以内にインデックスから外れるとされています。
  • 止めたいのがPHPそのものなら、PHPで503を返すことはできません。Webサーバーの設定やCDNなど、PHPの外で503を返す必要があります。
  • レンタルサーバー会社にサイトを止められていた人は、再開後にSearch Consoleでクロールとインデックスの状況を確かめてください。各社が停止中にどのステータスコードを返していたかは、公式には説明がありません。
目次

何が起きたか

日時(日本時間)発信元内容
10月21日23時ごろPHP重大な脆弱性2件を直したPHP 8.5.12、8.4.27、8.3.36、8.2.35を公開(PHPのアドバイザリ)
10月22日0時26分John Mueller氏(Google検索)Blueskyに投稿。PHPのサイトを止めて「予定外のアップデート」に対応するなら、タイムアウト、404、500ではなくHTTP 503を返すように。PHPの外で返す、DNSを別の場所に向ける、CDNを使うといった方法があると説明
10月22日2時13分John Mueller氏返信で、ステータスコードを良い順に「503、500、403、404、200」と並べた意見に、「良い考え方だ」と答える
10月22日2時40分Google検索セントラル公式LinkedInに投稿。緊急のPHPパッチを当てる人やサーバーを止める人に「503を忘れずに」。503ならインデックス済みのURLを作業中も保てて、200を返すようになれば自然に元に戻ると説明。404や、200で返すエラーページは避けるよう呼びかけ

海外のSEOニュースサイトSearch Engine Roundtableも、Mueller氏の投稿を取り上げています。日本語での案内は、10月22日18時の時点でGoogleから出ていません。ただ、もとになっているGoogleのドキュメントには日本語版があり、日本のサイトにもそのまま当てはまります。PHPの脆弱性そのものについては、PHPの脆弱性の記事にまとめています。

返すステータスコードで、検索での扱いはこう変わる

GoogleのHTTPステータスコードのドキュメント、ネットワークエラーとDNSエラーのドキュメント、ウェブサイトを一時停止する方法のガイドをもとに、止めている間に返すものごとの扱いをまとめました。

止めている間に返すものGoogleでの扱いおすすめ度
503(Service Unavailable)クロールのペースを一時的に落とす。インデックス済みのURLは残すが、続けば最終的に外す。Retry-Afterヘッダーで再開の目安を伝えられるおすすめ(短い期間のみ)
500、502503と同じ「サーバーエラー」として扱われ、クロールのペースが落ちる。続けばインデックスから外れる503よりは劣る
タイムアウト、接続のリセット、DNSのエラー5xxと同じように扱われ、すぐにクロールのペースが落ちる。アクセスできない状態が続くと、インデックス済みのURLは数日以内に外れる避ける
403、404、410などの4xx(429を除く)コンテンツがないものとして扱われ、インデックス済みのURLは外れる避ける
200で返す「メンテナンス中」のページそのページの中身がインデックスの候補になる。中身がエラーの内容ならSearch Consoleで「ソフト404」と表示される避ける
noindex、robots.txtでのクロールの全面禁止URLが検索から消えることがある避ける

Googleのガイドには、503を返している間はページのタイトルや説明、構造化データを更新できない、とも書かれています。止めている間に記事を直しても、再開してクロールされるまでは検索に反映されません。

止めてよいのは何日まで?

Googleは、はっきりした日数の上限は示していません。ただ、ドキュメントにはいくつかの目安があります。

  • クロールの頻度を下げる方法のページ(最終更新は10月11日)は、500、503、429でクロールを抑えるのは「数時間や1〜2日」の短い期間に限るとしています。1〜2日では済まない場合はすすめず、同じURLで数日続くとインデックスから外れることがあるとしています。
  • 一時停止のガイドは、サイト全体を止めるのは「長くても2〜3日」の最終手段とし、1〜2日なら503のお知らせページを、それより長いなら200で返すお知らせ用のトップページを置くよう案内しています。
  • 多くのURLで503や500が返ると、エラーを返していないページも含めて、そのホスト名(例:www.example.com)全体のクロールのペースが落ちます。エラーが減れば、クロールのペースは自動で戻ります。

今回のPHPの件でいえば、修正版を当てるまでの数時間から半日ほどの停止なら、503を返していれば影響は小さいと考えられます。たとえばロリポップ!が一部のサーバーのサイトを止めていたのは、10月22日3時5分から13時11分までの約10時間でした。逆に、古いPHPから8.2以降に移す作業などで何日も止めるつもりなら、503のままにせず、200で返すお知らせのページを置くほうがGoogleの案内に沿います。

なぜ今回は気をつけたいのか

ふだんのメンテナンスと違い、今回はPHPそのものに問題があります。WordPressのメンテナンスモードのプラグインや、PHPのコードで503を返す方法は、PHPが動いていることが前提です。Googleが2011年に公開した計画メンテナンスのブログ記事も、503を返す例をPHPのコードで示していました。PHPを止めたり、PHPが動かない状態にしたりすると、こうした方法は使えません。Mueller氏が「PHPの外で」と書いたのはこのためです。

もう一つは、日本では多くのサイトが、運営者ではなくレンタルサーバー会社の判断で止まったことです。各社のメンテナンス一覧のとおり、ロリポップ!のように利用者のサイトを一時的に止めた会社もあります。こうした停止の間に、各社のサーバーがGoogleのクローラーに503を返していたのか、別のエラーだったのかは、公式には説明がありません。

サイトの運営者・SEO担当者がすること

これから自分でサイトを止める場合

  1. 止めるならPHPの外で503を返します。Webサーバー(Apacheなら.htaccess、Nginxなら設定ファイル)、CDN、DNSで別のサーバーに向ける、といった方法があります。
  2. Retry-Afterヘッダーで再開の目安を伝えます。秒数(例:7200)か、UTCの日時で書きます。
  3. お知らせのページは静的なHTMLにします。Googleのガイドは、CSSはページ内に書き、画像も埋め込んで、外のファイルを読まずに済む形をすすめています。再開の予定や問い合わせ先も書いておきます。
  4. robots.txtは503にしないでください。robots.txtが503などのエラーを返すと、Googleはサイト全体のクロールを止めます。WordPressの標準のrobots.txtはPHPで作られているので、PHPを止める場合は、静的なrobots.txtのファイルを置いておくと安全です。
  5. curlなどで、本当に503が返っているか確かめます。例:curl -I https://www.example.com/ を実行し、1行目が「503 Service Unavailable」になっていれば正しく設定できています。
  6. 終わったら必ず元に戻します。503の設定を消し忘れると、そのうちインデックスから外れてしまいます。

Apacheの.htaccessで、PHPを通さずに503を返す設定の一例です。WordPressの設定より上に書きます。お知らせのページ(maintenance.html)とrobots.txtは503の対象から外しています。Apacheでは、RewriteRuleのRフラグに300番台以外のコードを指定すると、そのコードがそのまま返ります(Apacheの公式ドキュメント)。レンタルサーバーによっては使えない設定もあるので、各社の案内も確かめてください。

# メンテナンス中だけ追加し、作業が終わったら必ず消す
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteRule ^ - [R=503,L]
</IfModule>
<IfModule mod_headers.c>
Header always set Retry-After "7200"
</IfModule>

レンタルサーバー会社にサイトを止められていた場合

自分で503を設定できなかったとしても、止まっていたのが数時間から1日ほどなら、慌てる必要はないと考えられます。再開したら、次のことを確かめてください。

  • サイトが正しく表示され、200が返るか:トップページや主な記事を開き、curlなどで200が返ることを確かめます。
  • Search Consoleの「クロールの統計情報」:「設定」から開けます。止まっていた時間帯にサーバーエラーや接続のエラーが増えていないか、その後クロールが戻っているかを見ます。
  • Search Consoleの「ページのインデックス登録」:「サーバーエラー(5xx)」や「見つかりませんでした(404)」が急に増えていないかを見ます。
  • 大事なページの再クロールを頼む:Googleのガイドは、少しのページならSearch ConsoleのURL検査で、多くのページならサイトマップで、再クロールを頼むよう案内しています。

やってはいけないこと

  • 止めている間に404、403、410を返す
  • 「メンテナンス中」のページを200で返す
  • noindexを付ける、robots.txtでクロールを全面的に禁止する
  • Search Consoleの削除ツールでサイトを検索から隠す(Googleのガイドが使わないよう求めています)
  • 503のまま何日も放っておく

これまでの流れ

時期Googleの発信
2011年1月Search Centralブログで、計画メンテナンスのときは404やエラーを200で返さず503を返すよう案内。503を長く返し続けるとインデックスから外れることがあると注意
2020年3月新型コロナでオンラインの事業を止める人に向けて、一時停止の方法を案内。いまのGoogleのガイド「ウェブサイトを一時停止または無効化する」にもつながる内容
2023年2月Search Centralブログで、クロールを減らす目的で404や403を使わないよう呼びかけ。500、503、429を使うよう案内
いまのドキュメント「クロールの頻度を下げる」ページ(最終更新は2026年10月11日)は、500、503、429でクロールを抑えるのは「数時間や1〜2日」に限るよう案内
2026年10月22日PHPの脆弱性の修正に合わせて、Mueller氏とGoogle検索セントラルが503を使うよう改めて呼びかけ

Googleの考え方は15年前から変わっていません。今回の呼びかけは、世界中で多くのサイトが一斉に止まる状況での、おさらいといえます。クローラーの基本的な仕組みは、クローラーとは?で説明しています。

確かなこと、まだわからないこと

内容
確か止めるなら503がGoogleのおすすめ。4xxはインデックスから外れる。5xxやタイムアウトは続けば外れる。503は数時間から1〜2日が目安(いずれもGoogleの公式ドキュメント)
確かMueller氏はBlueskyで、Google検索セントラルはLinkedInで、PHPの修正に合わせて503を使うよう呼びかけた
わからない何時間・何日でインデックスから外れるかの正確な基準。Googleは「最終的に」「数日」などとしか書いていない
わからない国内のレンタルサーバー各社が、利用者のサイトを止めている間にどのステータスコードを返していたか
わからない今回の停止で、実際に検索順位やインデックスに影響が出たサイトがあるか。Googleからの説明はない

関連記事

出典

目次