マルウェア感染後のSEO完全復旧|8万件のインデックス未登録を2ヶ月で90%以上改善

「マルウェアの駆除は完了しました。サイトも正常に動いています。でも、検索順位が全く戻りません…」
このようなご相談を、頻繁にいただきます。セキュリティ会社に依頼してウイルスを除去したものの、Google Search Consoleを見ると数万件の「クロール済み-インデックス未登録」が残ったまま。サイトへの検索流入は減少し続け、売上にも深刻な影響が出ている――。
実は、この状況は決して珍しくありません。
多くのサイト運営者が「ウイルスさえ除去すれば元通り」と考えていますが、マルウェア感染によってGoogleから受けたスパム判定は、ウイルス除去だけでは解除されません。感染中に生成された大量の詐欺ページが、今もGoogleのデータベースに残り続け、サイト全体の評価を下げているのです。
本記事では、実際に86,600件という膨大なインデックス未登録を抱えたWordPressサイトを、わずか2ヶ月で98.9%改善させた実例をもとに、ウイルス除去後も検索順位が戻らない理由と、完全復旧までの技術対策をすべて公開します。
ウイルス除去後も検索順位が戻らない理由から始まり、Googleのスパム判定を解除する3つの技術対策、そして410 Goneと404 Not Foundの正しい使い分け方まで、実践的な内容を網羅しています。また、復旧にかかる実際の期間とタイムライン、Google Search Consoleでのモニタリング方法についても、具体的なデータとともに解説していきます。
同じような問題で困っている方、復旧作業の見積もりに悩んでいる方の参考になれば幸いです。
ウイルス除去後も検索順位が戻らない理由
WordPressサイトがマルウェアに感染し、ウイルス駆除を完了したにもかかわらず、検索順位が一向に回復しないというご相談を多くいただきます。
実は、マルウェアの除去だけでは復旧作業の半分も終わっていません。感染によって生成された大量の詐欺ページがGoogleにスパムサイトとして認識され、サイト全体の評価が著しく低下してしまうためです。
本記事では、実際に86,600件のクロール済み-インデックス未登録を抱えたサイトの復旧事例をもとに、Google Search Consoleでの具体的な対策方法と、検索順位を完全に回復させるまでのプロセスを詳しく解説します。
クロール済み-インデックス未登録とは?マルウェア感染がSEOに与える深刻な影響
「クロール済み-インデックス未登録」の意味
Google Search Consoleで「クロール済み-インデックス未登録」と表示されるページは、Googleのクローラーが巡回(クロール)したものの、検索インデックスに登録する価値がないと判断された状態を意味します。
つまり、いくらアクセスを期待しても、そのページはGoogle検索結果に一切表示されません。
マルウェアが生成する大量の詐欺ページ
多くの方が「ウイルスを除去すれば復旧完了」と考えがちですが、これは大きな誤解です。マルウェア感染は、サイトに以下のような深刻かつ長期的な影響を及ぼします。
詐欺ページの自動生成による被害
マルウェアは感染期間中、サイト運営者が気づかないうちに大量の偽ページを自動生成します。本事例では、約86,600件もの不正なURLが生成されていました。
生成されたURLには特徴的なパターンがあります。まず、?_gl=1*rgknbr*_ga*MzY3MjE1MDc...のような長大なパラメータ付きURLが大量に作られています。また、detail.phpやshopdetailを含む偽ECサイト風のURLも多数確認されました。これらはすべて詐欺サイトや偽商品ページへ誘導する目的で作られたもので、1つのマルウェアが数万から数十万ものURLを短期間に量産するのです。

Googleのスパム判定メカニズム
Googleのクローラーがこれらの不正ページを発見すると、複数の段階を経てサイト全体の評価を下げていきます。
まず、クロール段階でGoogleが不正URLを巡回し、その内容を確認します。次に品質評価の段階で「類似コンテンツ」や「価値の低いページ」と判断され、インデックス拒否として「クロール済み-インデックス未登録」に分類されます。そして、低品質ページの割合が高くなるとサイト全体への影響が及び、サイト全体の信頼性が低下していきます。最終的には、本来上位表示されていた正常なページまで順位が下落するという、正常ページへの波及が起こるのです。
具体的な被害としては、検索流入が前月比で60〜80%も減少し、主要キーワードでの順位が10位以内から圏外へと転落します。さらに、サイト全体がスパム扱いされることで新規ページもインデックスされにくくなり、ドメインの信頼性低下によって復旧に数ヶ月を要する事態となるのです。
なぜウイルス除去だけでは解決しないのか
ここが最も重要なポイントです。マルウェア本体を削除しても、Googleのデータベースには不正URLの記録が残り続けます。
マルウェアを除去することで、新たな不正ページの生成を止めることはできます。しかし、既に生成された数万件のURLはそのまま残ったままです。Googleは定期的に再クロールを行い、「まだ低品質ページが大量にある」と認識し続けます。結果として、スパム判定が自動では解除されないのです。
つまり、ウイルス除去はスタートラインであり、ここからGoogleの評価を回復させる技術的対策が必須なのです。
【事例】86,600件のインデックス未登録からの復旧記録
発覚時の深刻な状況
2024年10月初旬、Google Search Consoleのアラートで異常を検知しました。確認してみると、予想を超える深刻な事態が判明しました。
インデックス未登録URLは約86,600件にも上り、すべて「クロール済み-インデックス未登録」のステータスとなっていました。前月比でサイト全体の検索流入は約65%も減少し、主要キーワードで5位以内だったページが20位圏外へ転落していました。さらに、新規投稿した記事も48時間以内にインデックスされない状態が続いていたのです。
不正URLのパターンを分析すると、?_gl=1*rgknbr*_ga*MzY3MjE1MDc...形式が約62,000件、detail.php?id=xxx形式が約18,000件、shopdetail?item=xxx形式が約6,600件となっており、いずれも偽ECサイトやフィッシング詐欺への誘導ページでした。
当初、新規ドメインへの全面移行も検討しました。しかし、移行対象記事数は約1,200記事、必要な301リダイレクト設定は約3,500URL、被リンク損失のリスクとしてドメインオーソリティ低下の懸念がありました。作業工数は最低でも3〜4ヶ月、費用対効果を考えると移行コストが数百万円規模になると見込まれました。
そこで、現在のドメインを維持したまま、技術的対策でGoogle評価を回復させる方針を選択しました。
実施した3つの技術的対策
マルウェア除去後のGoogle評価回復には、3つの対策を組み合わせる必要があります。どれか1つだけでは効果が薄く、復旧に半年以上かかることもあります。キューブリックでは以下の3つを同時に実施しました。
対策① robots.txtによる今後のクロール制御
今後Googleが不正URLを巡回しないよう、robots.txtで制御します。
ただし、robots.txtの使用については慎重な判断が必要です。Google Search Central(https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=ja)でも、「Googleのクローラーからのリクエストによってサーバーが過負荷になっていると考えられる場合に、ウェブページに対してrobots.txtファイルを使用することで、クロールトラフィックを管理できます。また、サイト上の重要でないページや類似したページのクロールを防ぐこともできます」と記載されています。
本事例では、マルウェアが生成した86,600件もの不正URLにGoogleのクローラーが無駄なリソースを割いている状況でした。これは明らかに「重要でないページや類似したページ」に該当します。また、大量の不正URLへのクロールがサーバーに負荷をかけている可能性も考慮し、robots.txtによる制御を実施しました。
むやみにrobots.txtを設定すべきではないという意見もありますが、今回のような明確な理由がある場合は、状況を見極めた上で臨機応変に対応することが重要です。
WordPressの標準保護設定に加え、マルウェアが生成した特定のURLパターンをrobots.txtでブロックしました。
User-agent: *
Disallow: /*?_gl=
Disallow: /*/detail.php
Disallow: /*/shopdetail
Disallow: /*_ga*
実装にあたっては、ワイルドカード(*)を活用してパターン全体をブロックしつつ、既存の正常なページに影響しないよう慎重にパターンを選定しました。更新後はGoogle Search ConsoleのURL検査ツールで即座に通知し、robots.txtテスターで動作確認を実施しています。
この対策により、新規クロールの無駄を削減し、Googleのクロールバジェットを正常なページに集中させることができます。同時に、「このサイトは問題を認識している」というシグナルをGoogleに送ることにもなります。
対策② 410 Goneによる既存URLの削除通知
既にGoogleが巡回済みの不正URLに対して、完全削除を通知します。
マルウェアが生成したURLへのアクセスに対して「410 Gone」ステータスコードを返す専用WordPressプラグイン(sm-malware-cleanup)を開発・実装しました。
// プラグインの核心的な処理(簡易版)
function handle_malware_urls() {
$request_uri = $_SERVER['REQUEST_URI'];
// マルウェアパターンの検出
if (strpos($request_uri, '?_gl=') !== false ||
strpos($request_uri, 'detail.php') !== false) {
status_header(410); // 410 Goneを返す
nocache_headers();
die('This content has been permanently removed.');
}
}
add_action('init', 'handle_malware_urls');
410 Goneと404 Not Foundの決定的な違い
| ステータスコード | Googleの解釈 | 適用シーン | 再クロール |
|---|---|---|---|
| 404 Not Found | 一時的に見つからない | ページが一時的に利用不可 | 将来的に再クロールする |
| 410 Gone | 完全に削除された | 永久に削除されたコンテンツ | インデックスから即座に削除 |
410 Goneが効果的な理由は明確です。404の場合、Googleは「いずれ復活するかもしれない」と判断して再クロールを続けてしまいます。一方、410は「二度とこのURLにコンテンツは戻らない」という強い宣言となります。Googleは410を受け取ると、インデックスから優先的に削除する処理を行います。これにより、不要なクロールを減らし、正常ページの評価を早く回復させることができるのです。
実装にあたっては、正常なページに影響しないようパターンマッチを厳密に行い、プラグインは軽量に保ってサイト速度に影響を与えないよう配慮しました。また、どのURLが410を返したかをログとして記録する仕組みも実装しています。
⚠️ 実装における注意事項
上記のコード例は簡略化したものです。実際の実装では以下の考慮が必要です:
- 正規表現による厳密なパターンマッチング(誤検知を防ぐため)
- データベースへの負荷を考慮したキャッシング機構
- 管理画面からパターンを追加・編集できる仕組み
- 410を返したURLのログ記録と分析機能
- 既存プラグインとの競合チェック
- セキュリティ対策(SQLインジェクション等の防止)
誤った実装は、正常なページまで410を返してしまい、サイト全体がインデックスから削除される重大な事故につながります。不安な場合は、専門家への相談をお勧めします。
対策③ Google Search ConsoleによるURL削除リクエスト
Google Search Consoleから直接、URLの削除申請を行います。
2024年10月10日、Google Search Consoleの「削除ツール」を使用してURL削除リクエストを申請しました。
手順としては、Google Search Consoleの「削除」メニューを開き、「新しいリクエスト」をクリックして、URLパターンを指定(例:*?_gl=*)します。削除理由を明記して申請すれば完了です。
注意点として、リクエストの処理には数日から数週間かかること、一度に申請できるURLパターンには制限があること、承認されない場合もあるため他の対策との併用が必須であること、そして削除リクエストは一時的な対処であり恒久的な対策ではないことを理解しておく必要があります。
この3つの対策は、それぞれ異なる役割を持っています。robots.txtは「今後は来ないでください」、410 Goneは「もう何もありません」、URL削除リクエストは「直接Googleにお願い」という形です。この3つが同時に働くことで、Googleに「このサイトは本気で問題に取り組んでいる」と認識させることができます。
実際の処理状況を見ると、申請から1週間後はまだ審査中のままでしたが、2週間後には一部のURLパターンが承認され削除処理が開始し、3週間後にはすべてのリクエストが処理完了しました。
ただし、URL削除リクエストだけでは根本解決にはなりません。robots.txtと410 Goneの実装があってこそ、効果が持続します。
復旧までの期間とタイムライン
「マルウェア除去後、どのくらいで検索順位は回復しますか?」
これは最もよくいただく質問ですが、本事例では対策実施から約2〜3ヶ月で大幅な改善が見られました。
実際の改善推移グラフ

詳細なタイムライン
| 時期 | インデックス未登録件数 | 主な出来事・変化 |
|---|---|---|
| 2024年10月10日(対策開始) | 約86,600件 | ・robots.txt更新 ・410 Goneプラグイン実装 ・URL削除リクエスト申請 |
| 10月末(3週間後) | 約78,000件(-10%) | ・わずかな減少を確認 ・まだ大きな変化なし |
| 11月中旬(5週間後) | 約52,000件(-40%) | ・急速に減少開始 ・Googleが対策を認識し始めた兆候 |
| 12月初旬(7週間後) | 約18,000件(-79%) | ・加速度的に改善 ・一部キーワードで順位回復の兆し |
| 12月中旬(2ヶ月後) | 約1,000件(-98.9%) | ・ほぼ正常化 ・検索流入が回復傾向に |
| 2025年1月(3ヶ月後) | 約500件 | ・さらに減少継続 ・主要キーワードで上位復帰 ・検索流入が感染前の90%まで回復 |
改善プロセスで見えたこと
1ヶ月目は様子見期間でした。Googleのクローラーが変更を認識するまでには時間がかかり、減少ペースは緩やかで週に数百件程度にとどまります。この時期は「本当に効果があるのか?」と不安になる時期でもあります。
2ヶ月目に入ると急速改善期を迎えます。突然、減少スピードが加速し、Googleの自動システムが「問題が解決された」と学習し始めます。一週間で数千から1万件単位で減少していく様子が観察できました。
3ヶ月目以降は安定回復期となり、残存する未登録URLも徐々に減少していきます。正常なページの検索順位が着実に回復し、新規投稿した記事も24時間以内にインデックスされるようになりました。
Google公式の見解:スパム判定解除には数ヶ月かかる
Google公式ドキュメント(Google Search Central)では、「Googleのスパムポリシーを遵守していることをGoogleの自動システムが学習するのに数ヶ月かかることがあります」と明記されています。
本事例では約86,600件という膨大な量の不要URLがあったため、完全な復旧には相応の時間が必要でしたが、技術的対策により想定期間内(約3ヶ月)での改善を実現しました。
なぜこの対策が成功したのか
理由① 複数の対策を同時実施したこと
robots.txtで今後のクロールを制御し、410 Goneで既にクロール済みのURLに対して削除を明示し、URL削除リクエストでGoogleに直接削除を依頼する。この3つを同時に実施することで、Googleに対して問題への真摯な対応姿勢を示すことができました。
理由② 404ではなく410を選択したこと
404ではなく410 Goneを使用することで、「これらのURLは意図的に削除されたもので、再クロールは不要」とGoogleに明確に伝えました。この適切なHTTPステータスコードの選択が、復旧速度を大きく左右しました。
理由③ 継続的なモニタリングを行ったこと
Google Search Consoleの「クロール済み – インデックス未登録」URL数を週1回確認し続けました。改善の進捗を数値で把握することで、対策の効果を確認しながら、必要に応じた追加施策を実施できました。
よくある質問(FAQ)
Q1. ウイルス除去後、検索順位はいつ回復しますか?
A. マルウェアの規模にもよりますが、適切な技術対策を実施した場合、2〜3ヶ月程度で大幅な改善が見られます。ただし、Googleの自動システムが学習するまでには数ヶ月かかることがあります。本事例では、対策実施から2ヶ月で98.9%の改善を達成しました。
Q2. クロール済み-インデックス未登録が数万件ある場合、どう対処すべきですか?
A. まず、マルウェアが完全に除去されているか確認してください。その上で、(1)robots.txtでの制御、(2)410 Goneステータスコードの返却、(3)Google Search ConsoleでのURL削除リクエストの3つを同時に実施することをお勧めします。単一の対策では効果が限定的です。
Q3. 404 Not Foundではなく、410 Goneを使うべき理由は?
A. 404は「一時的に見つからない」という意味で、Googleは将来的に再クロールする可能性があります。一方、410 Goneは「完全に削除された」という明確なシグナルを送るため、Googleはインデックスから即座に削除する判断をします。マルウェアが生成した不要URLには410 Goneが適切です。
Q4. 新しいドメインに移行した方が早くないですか?
A. サイトの規模が小さければ選択肢の一つです。しかし、大規模サイトの場合、すべてのコンテンツの移行、リダイレクト設定、被リンクの損失などを考慮すると、現実的ではありません。適切な技術対策を実施すれば、現在のドメインで復旧させることが可能です。
Q5. 自分で対応できますか?それとも業者に依頼すべきですか?
A. 技術的な知識があり、すべてに自信がある場合は自力での対応も可能です。
必要なスキルとしては、WordPressのファイル構造とPHPプログラミングの知識、robots.txtとHTTPステータスコードの正確な理解、Google Search Consoleの高度な使用経験、正規表現によるURLパターンマッチングの実装能力、そしてサーバーログの分析とデバッグ能力が求められます。
ただし、誤った実装により正常ページまで検索結果から消える可能性があり、対策が不十分だと数ヶ月経っても改善しないことがあります。トライアンドエラーを繰り返すうちにさらに状況が悪化する恐れもあり、その間の機会損失(売上減少)が対策費用を上回る可能性も考慮すべきです。
実際のところ、本事例のような複雑なケースでは専門家への依頼を強くお勧めします。特に、企業サイトやECサイトなど、検索流入が売上に直結するビジネスでは、早期の専門的対応が結果的にコスト削減につながります。
まとめ:マルウェア感染後の完全復旧に必要なこと
マルウェア感染後の完全復旧には、いくつかの重要なポイントがあります。まず理解すべきは、マルウェアの除去は第一歩に過ぎないということです。Googleのスパム判定解除には専門的な技術対策が必須であり、復旧には2〜3ヶ月単位の時間が必要となります。焦らず継続的にモニタリングを行うことが大切です。
具体的な対策としては、robots.txt、410 Gone、URL削除リクエストの3つを同時実施することが重要です。これらを適切に組み合わせることで、検索順位の完全回復は十分に可能となります。
ウイルス感染サイトの復旧において、「ウイルスを除去すればよい」という認識は誤りです。サイトの規模が大きい場合、新しいドメインへの移行は膨大な工数を要するため、現実的ではありません。
技術的に正しい対策を実施し、中長期的に見守ることで、サイトの評価を確実に回復させることができます。本事例が、同様の問題に直面している方々の参考となれば幸いです。
