WordPress改ざんの復旧後に検索順位が戻らない時の直し方

「改ざんの駆除は終わりました。サイトも正常に動いています。でも、検索順位がまったく戻らないんです」
このご相談を、私たちは本当によくいただきます。多くは「ジャパニーズキーワードハック」と呼ばれる、日本語の偽商品ページを大量生成されるタイプの改ざんです。セキュリティ会社に頼んで不正ファイルを除去してもらった。サイトの表示も問題ない。なのにGoogle Search Consoleを開くと、数万件の「クロール済み-インデックス未登録」が残ったまま。検索からの流入は減り続け、売上にも響いている――。こういう相談です。
最初にはっきりさせておきたいのは、改ざん対応には性質のまったく違う2つの作業がある、ということです。

多くの方が「改ざんさえ駆除すれば順位は元通りになる」と考えています。けれど、駆除はあくまでスタートライン。Googleの評価を回復させる作業は、ここから別途始まります。
この記事では後者、つまり順位復旧のほうに焦点を当てます。駆除後も順位が戻らない理由、そもそも戻せるサイトかどうかの見極め方、具体的な技術対策、戻るまでの期間の見方を、読者のサイトにそのまま使える順番で書いています。根拠として、86,600件のインデックス汚染を約2か月でほぼ正常化させた記録と、翻訳サービス業サイトの対応記録を末尾に載せています。本文で「事例では」と書いている数字は、そこから引いたものです。対応事例が増えるたびに、この記事へ追記しています。
伊藤「駆除は終わったのに順位が戻らない」というご相談は、駆除した業者さんが悪いわけではありません。システムの復旧とSEOの復旧は別の仕事、というだけです。ここを分けて考えると、落ち着いて進められます。
駆除しても順位が戻らないのはGoogleに記録が残るから
改ざん・ハッキングの被害に遭い、不正ファイルを駆除し終えたのに順位がいっこうに戻らない。この現象には、ちゃんと理由があります。


改ざんで最も多いのは、運営者がまったく気づかないうちに偽ページを大量に自動生成されるタイプの被害です。生成されるURLにはいくつかの典型があります。
?_gl=1*rgknbr*_ga*MzY3MjE1MDc…のように、やたらと長いパラメータがぶら下がったURLdetail.phpやshopdetailを含む、いかにもECサイトの商品ページに見せかけたURL
いずれも詐欺サイトや偽の商品ページへ訪問者を誘導するために作られたもので、ひとつの改ざんが短期間に数万から数十万のURLを量産していきます。事例では約86,600件が裏で作られていました。
こうして生成された不正URLをGoogleが巡回すると、Search Console上では「クロール済み-インデックス未登録」というステータスが大量に並びます。Googleのクローラーがページを見には来たものの、「検索結果に載せる価値はない」と判断して保留にした状態です。改ざん以外でこの件数が増えたときの仕分け方は、「クロール済み – インデックス未登録」の原因と直し方に書いています。そのページ単体が検索に出ないだけなら、まだ実害は限定的です。問題は、低品質なURLがサイト全体に占める割合が大きくなると、Googleがドメインそのものを「質の低いページばかりのサイト」と見なし始める点にあります。8万件の詐欺ページに対して本来の記事が1,000記事しかなければ、正常なコンテンツはわずか1%ほど。本来評価されるべき記事が、大量のノイズの中に埋もれてしまいます。
では、なぜ不正ファイルを駆除しても順位が戻らないのか。理由はシンプルで、駆除はサーバー上のマルウェアを消す作業であって、Googleのデータベースに刻まれた不正URLの記録までは消えないからです。駆除によって新しい不正ページが増えるのは止まります。けれど、すでに登録された数万件のURLはそのまま残り、Googleは定期的に再クロールしては「このサイトはまだ低品質ページを大量に抱えている」と認識し続ける。スパム判定は自動では外れません。だからこそ、駆除のあとに「Googleに残った記録を能動的に消しにいく」作業が必要になります。
見た目は変わらず、異変は検索結果に出る
この記事で扱う改ざんは、Googleが「日本語キーワードハック(Japanese keyword hack)」と呼ぶタイプです。侵入者がサイト内に日本語の偽商品ページを何千〜何万件も自動生成し、検索結果に表示させて偽ECサイトやフィッシングへ誘導します。サイトの見た目は変わらないことが多く、運営者が気づくのは検索結果やSearch Consoleの異変からです。
見分け方は3つです。
- site:自社ドメイン で検索すると、見覚えのない日本語の商品名やブランド名のページが大量に並ぶ
- Search Consoleの「ページのインデックス登録」で、
?shop/g/…/view/item/…detail.php?id=…?_gl=…のような見覚えのないURLが数千件以上ある - 検索パフォーマンスの流入キーワードに、自社と無関係な商品名が急に増えている
末尾の2件はどちらもこの型でした。不正ファイルの駆除だけでは終わらず、Googleに登録された大量の偽ページを消して評価を戻す作業が別に必要になる、という点が共通しています。
改ざんが原因なら記事を直しても順位は戻らない
順位が落ちたとき、原因がSEO施策側にあるのか、それとも改ざんなのかを見極めることが復旧の出発点です。通常のSEO変動なら、コンテンツや内部対策を見直せば改善の余地があります。けれど改ざんが原因の場合、記事をいくら直しても順位は戻りません。打ち手がまったく違うので、最初の切り分けを間違えると時間を大量に浪費します。


順位が落ちたからといって、すぐに「SEOが悪かった」と決めつけないことです。まずSearch Consoleのセキュリティ警告と site: 検索を見る。改ざんのサインに心当たりがあれば、それはSEOの問題ではなく改ざんの問題なので、駆除と順位復旧を前提にした対応へ切り替えてください。
ブラックリスト・手動対策・正常記事の3つで戻せるか分かる
技術論に入る前に、そもそも戻せるサイトなのかを見ます。掃除しても、Googleとの関係がどこまで壊れているかで難易度がまるで変わるからです。


3つとも「なし」なら話は単純です。順位を落としているのは大量の不正URLというノイズだけなので、それを消せば本来の評価が戻る。事例1のサイトもこの状態だったので、ドメイン移行ではなく掃除を選びました。
どれかに当たっていると一手間増えます。ブラックリストや手動ペナルティは自動では解けず、駆除後に再審査リクエストを出してGoogleに「直した」と認めさせるまで順位は戻らない。正常な記事まで圏外なら、ドメインの信頼そのものが削れているサインで、復旧は長引くと見ます。
robots.txt・410・削除リクエストを同時に走らせる
Googleの評価を回復させるには、性格の違う複数の対策を組み合わせる必要があります。どれか一本だけだと効きが弱く、復旧に半年以上かかることもあります。次の3つを同時に走らせます。


robots.txtで今後のクロールを止める
まず、今後Googleが不正URLを巡回しないよう、robots.txtで制御をかけます。
robots.txt(ロボッツテキスト)とは、Googleなどの検索エンジンやAIのクローラー(ロボット)に対し、ウェブサイト内のどのページやファイルへのアクセスを許可・禁止するかを指示するためのテキストファイルです。
robots.txt の概要とガイド | Google 検索セントラル | Documentation | Google for Developers
robots.txtの扱いには慎重さが要ります。Google Search Centralでも、robots.txtの用途として、クローラーのリクエストでサーバーが過負荷になっている場合のクロール管理や、サイト内の重要でないページ・類似ページのクロールを防ぐこと、と案内されています。改ざん後のサイトはまさにこれに当てはまります。数万件の不正URLにGoogleのクローラーが無駄なリソースを割いている状態で、これは明らかに「重要でない・類似したページ」ですし、大量のクロールがサーバーに負荷をかけている可能性もあります。
「robots.txtをむやみに使うべきではない」という意見はもっともで、平時なら私もそう言います。ただ理由がはっきりしている場面では、状況を見極めたうえで臨機応変に使うべきだと考えています。
実装では、WordPress標準の保護設定に加えて、改ざんが生成した特定のURLパターンをブロックします。
User-agent: *
Disallow: /*?_gl=
Disallow: /*/detail.php
Disallow: /*/shopdetail
Disallow: /*_ga*ワイルドカード(*)でパターンごとまとめて止めつつ、既存の正常なページに巻き添えが出ないよう、対象パターンは慎重に選びます。更新後はSearch ConsoleのURL検査ツールですぐにGoogleへ通知し、robots.txtレポートで意図どおり取得されているかを確認します。


これで新規クロールの無駄が減り、クロールバジェットを正常なページへ集中させられます。それと同時に、Googleに対して「このサイトは問題を認識して手を打っている」というシグナルを送る意味もあります。
巡回済みの不正URLには404ではなく410を返す
robots.txtが未来のクロールを止める対策だとすれば、すでにGoogleが巡回済みのURLには別の手当てが要ります。改ざんが生成したURLへのアクセスに対して 410 Gone のステータスコードを返す仕組みです。事例では、ちょうどよい既製品が無かったので専用のWordPressプラグイン(sm-malware-cleanup)を自作して入れました。


ここでのポイントは、404ではなく410を選ぶことです。404を返すと、Googleは「いずれ復活するかもしれない」と考えて、しばらく再クロールを続けます。一方410は「このURLに二度とコンテンツは戻らない」という強い宣言です。Googleは410を受け取ると、そのURLを優先的にインデックスから外す処理に回します。だから不要なクロールが早く減り、その分だけ正常なページの再評価が前に進みます。404のまま放置していたら、ここまで早くは戻りません。
実装にあたっては、正常なページを巻き込まないようパターンマッチを厳密にし、プラグイン自体は軽量に保ってサイト速度に影響を与えないようにします。どのURLに対して410を返したかはログに記録し、後から検証できるようにしておきます。
//独自開発した 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プラグインを自作するなら、ここに注意
このプラグインの実装は、見た目より神経を使います。本番で使うなら、最低でも次のあたりは考える必要があります。
- 誤検知を避けるための、正規表現による厳密なパターンマッチング
- データベース負荷を抑えるキャッシュの仕組み
- 管理画面からパターンを追加・編集できる導線
- 410を返したURLのログ記録と分析
- 既存プラグインとの競合チェック
- SQLインジェクションなどのセキュリティ対策
実装を誤ると、正常なページにまで410を返してしまい、サイト全体がインデックスから消えるという取り返しのつかない事故になります。自信がなければ、ここは専門家に相談したほうがいい部分です。
削除リクエストは単独では効かず一時的な対処
3つ目は、Search Consoleの「削除」ツール(現在のメニュー名は「非表示」)からの直接申請です。*?_gl=* のようにURLパターンを指定し、削除理由を添えてリクエストを出します。


ただし、この削除リクエストには性格上の限界があります。処理に数日から数週間かかること、一度に申請できるパターンに上限があること、必ず承認されるわけではないこと、そして何より、これは一時的な対処であって恒久対策ではないこと。Googleの削除ツールはあくまで「一時的に検索結果から隠す」性質のもので、robots.txtと410 Goneの実装があってはじめて、効果が持続します。単独でやっても、しばらくすると戻ってきてしまいます。
即効性はないので、申請したら他の対策を進めながら待つ、という感覚です。事例1では、申請から1週間後はまだ審査中、2週間後に一部のパターンが承認されて削除処理が始まり、3週間後にすべて処理完了でした。
この3つは、それぞれ役割が違います。robots.txtは「今後は来ないでください」、410 Goneは「もう何もありません」、削除リクエストは「直接Googleにお願いします」。別々の角度から同じゴールへ向かわせることで、Googleに「このサイトは本気で問題に取り組んでいる」と受け取らせる。3本を同時に回すことが、復旧の速さにつながります。



410を返すプラグインは、ちょうどよい既製品が無かったので自作しました。難しいことはしていません。「このパターンのURLには410を返す」だけです。
復旧には2〜3か月かかり、最初の1か月はほとんど動かない
「駆除のあと、どのくらいで順位は戻りますか」。これは本当によく聞かれます。適切に3つの対策を打てば、対策開始から約2〜3か月で大きな改善が出ます。ただし、数字の動き方にははっきりした波があります。


最初のひと月は、正直に言えば不安な時期です。Googleのクローラーが変更を認識するまでにはタイムラグがあって、減りは週に数百件程度。「本当に効いているのか」と疑いたくなる期間で、ここで焦って余計なことをすると逆効果になりかねません。ところがふた月目に入ると、ある日を境に減少が一気に加速します。Googleの自動システムが「この問題は解消された」と学習し始めたサインで、週に数千から1万件単位で消えていく。三か月目以降は落ち着いて、残った未登録URLが少しずつ減りながら、正常なページの順位が着実に戻り、新規記事も24時間以内に拾われるようになります。
Googleの公式ドキュメントにも、スパムポリシーを守っていることを自動システムが学習するには数か月かかることがある、と書かれています。事例1は8.6万件という量だったので相応の時間はかかりましたが、それでも約3か月に収まりました。
週1回、未登録件数を記録して判断する
週に1回、Search Consoleの「クロール済み-インデックス未登録」の件数を記録してください。数字で進捗を追っていれば、ふた月目の急減を「効いている証拠」と判断でき、不安な一か月目にも余計な手を加えずに済みます。モニタリングは派手さこそありませんが、復旧作業では欠かせない部分です。
最後にひとつ、正直なところを書いておきます。どのページをどの順位で出すかを最終的に決めるのはGoogleであって、私たちが特定の順位を保証できるものではありません。私たちにできるのは、Googleが正しく再評価できる「きれいな状態」を技術的に作ること。逆に言えば、不正URLという評価低下の根本原因を取り除かない限り、サイトが正しく評価し直されることもない。順位復旧とは、Googleに正しく判断してもらうための土台づくりだと考えています。
侵入経路をふさがないと戻した順位はまた落ちる
順位を取り戻しても、侵入経路が残っていれば改ざんは再発し、また同じように順位が落ちます。順位復旧と並行して、再発防止まで手を入れておくことが大事です。
やっておきたいのはこのあたり。
- WordPress本体・プラグイン・テーマを更新し続ける運用に変える。使っていない拡張機能は無効化で止めず、削除まで
- 管理画面・FTP・サーバー・DBの認証情報を棚卸しし、不要なアカウントや強すぎる権限を整理する
site:検索とSearch Consoleの「セキュリティの問題」を定期的に見る習慣をつける- ファイルとデータベースのバックアップを取り、いつの時点まで戻せるかを把握しておく
最後のバックアップには注意点があります。改ざんが疑われたとき、原因を調べないまま古いバックアップを戻すと、改ざん済みの状態に巻き戻すだけ、という失敗もよくあります。
もうひとつ。改ざんを「SEO担当だけの問題」にしないことです。実際には検索評価だけでなく、ユーザーの信頼、ブランド、問い合わせ対応、社内の工数まで影響が広がります。Web担当・制作会社・情報システム・必要なら経営層まで、異変が起きたときにすぐ連携できる体制を作っておくほうが、結局は早く止められます。
実際の対応事例
本文の手順の根拠になった2件です。症状・原因・対応内容・結果を同じ形式で記録しています。



ここからは実際の数字です。8万6千件という数は、最初にSearch Consoleで見たとき、私も息をのみました。
86,600件のインデックス汚染から2か月で復旧




2024年10月初旬、Search Consoleのアラートで異常を検知。インデックス未登録のURLが約86,600件、そのすべてが「クロール済み-インデックス未登録」。検索流入は前月比で約65%減り、5位以内に入っていた主要キーワードのページは20位より下、実質圏外。新しく投稿した記事も48時間経ってもインデックスされない(ドメイン全体の信頼が下がっているときの典型)
日本語キーワードハックによる偽ECページの大量生成。不正URLの内訳は ?_gl=1*rgknbr*_ga*… 形式が約62,000件、detail.php?id=xxx 形式が約18,000件、shopdetail?item=xxx 形式が約6,600件。どれも偽ECサイトやフィッシング詐欺への誘導ページ。ブラックリスト登録・手動による対策は無く、本来の記事は圏外化していなかった
新規ドメインへの全面移行を検討したが見送り(約1,200記事・301リダイレクト約3,500URL・工数3〜4か月・数百万円規模で費用対効果が合わない)→ 現ドメインを維持し、2024年10月10日にrobots.txtで不正URLパターンをブロック → 410 Goneを返す専用プラグイン(sm-malware-cleanup)を開発・導入 → Search Consoleの削除ツールで *?_gl=* などのパターンを申請(1週間後は審査中、2週間後に一部承認、3週間後に全件処理完了)→ 週1回、未登録件数を記録
10月末 約78,000件(−10%)→ 11月中旬 約52,000件(−40%)→ 12月初旬 約18,000件(−79%)→ 12月中旬 約1,000件(−98.9%)→ 2025年1月 約500件。主要キーワードで上位に復帰し、検索流入は感染前の約90%まで回復。新規記事は24時間以内にインデックスされるようになった




この件では、新規ドメインへの全面移行も一度は検討しました。汚れたドメインを捨ててやり直す、という発想です。ただ計算してみると、移行対象は約1,200記事、必要な301リダイレクトは約3,500URL、しかも積み上げてきた被リンクを失えばドメインの評価も下がります。作業工数は最低でも3〜4か月、コストは数百万円規模。費用対効果がまったく見合いませんでした。ブラックリスト未登録、手動による対策なし、本来の記事は圏外化していない、の3つを確認できていたので、「掃除すれば戻せる」と判断して現ドメインを維持しました。結果から言えば、この判断は正解でした。
翻訳サービス業のサイトがアクセス10分の1に
同じ「駆除は済んだのに検索が戻らない」相談で、別のサイトを対応した記録です。事例1と違い、こちらは不正ページだけでなく、本来の記事が消えていたことと、不正URLの返し方がばらばらだったことが復旧を遅らせていました。


2026年4月中旬のハッキングで、日本語の商品ページを装った不正ページ(ジャパニーズキーワードハック)が大量に生成。駆除後も検索からのクリック数が1日80前後から10前後へ落ちたまま戻らない
約4万件の不正URL(?shop/g/… /view/item/… など)がGoogleに残っていた。しかも不正URLの返し方が403/401/リダイレクトとばらばらで、削除が進まない。さらに消えていた記事と、主力ページの孤立が評価を下げていた
不正URLのパターン特定 → 410 Goneを返す専用プラグインを作成・導入 → URL削除申請と不正サイトマップの除去・正規サイトマップの再送信 → 全ファイルのバックドアスキャン → 主力記事の内部リンク強化(フッターの「よく読まれる記事」と関連記事の表示) → スパム被リンクの否認 → 消えていた記事をWayback Machineから復旧しリダイレクト設定 → 有効ページの再フェッチ
Googleのクロール数が1日1万件超に急増。表示回数は1日400前後から1,000超へ回復傾向。site:検索から不正ページが消え、正規ページのみ表示される状態に。順位の完全回復は数か月〜半年の見通し


この件で効いたのは、410で不正URLを一本化して返したことと、消えた記事を復旧して主力ページへの内部リンクを張り直したことです。不正URLの削除だけでは、Googleが「読み直す理由」を持てません。正規のページが増え、つながり直したことで、クロールが戻ってきました。



2件の事例に共通しているのは、不正URLの「消し方」を一本化したことです。403や404やリダイレクトがばらばらだと、Googleはいつまでも読み直しに来ます。
よくある質問(FAQ)
- サイト改ざんの駆除後、検索順位はいつ回復しますか?
-
改ざんの規模によりますが、適切な技術対策を打てば2〜3か月程度で大きな改善が見られます。Googleの自動システムが学習するまでに数か月かかることがあるためで、事例1では対策開始から2か月で98.9%の改善でした。ただし最初のひと月はほとんど動かないことが多く、ここで焦らないことが大切です。
- 自分のサイトが順位を戻せるかどうか、判断する方法はありますか?
-
目安として、ドメインがブラックリストに登録されていないか、Search Consoleで「手動による対策」を受けていないか、本来の正常な記事が圏外になっていないか、の3点を見ます。いずれにも該当しなければ、評価低下の原因は不正URLの大量生成に絞られている可能性が高く、掃除すれば元の順位に戻せる見込みが十分にあります。逆にブラックリスト登録や手動による対策があると、解除申請という別ステップが必要になり、難易度と期間が上がります。
- 駆除は済んだのに、順位下落が止まりません。何が原因ですか?
-
不正ファイルを駆除しても、Googleのデータベースに残った数万件の不正URLがサイト評価を下げ続けているためです。駆除(システム復旧)とは別に、robots.txt・410 Gone・URL削除リクエストによる順位復旧の作業が必要になります。
- 404ではなく410 Goneを使うべき理由は?
-
404は「一時的に見つからない」という意味で、Googleは将来また見に来る可能性があります。410 Goneは「完全に削除した」という明確なシグナルなので、Googleはインデックスから速やかに外します。改ざんで生成された不要URLには410が適切です。
- 新しいドメインに移行したほうが早くないですか?
-
小規模サイトなら選択肢のひとつです。ただ大規模サイトでは、全コンテンツの移行、リダイレクト設定、被リンクの損失まで考えると現実的でないことが多い。事例1(1,200記事・3,500リダイレクト・数百万円規模)でも現ドメイン維持を選び、復旧できました。
- 自分で対応できますか?業者に頼むべきですか?
-
技術的な知識があれば自力でも可能ですが、WordPressのファイル構造とPHP、robots.txtとHTTPステータスコードの正確な理解、Search Consoleの高度な運用、正規表現によるパターンマッチング、サーバーログの分析まで一通り必要です。誤った実装は正常ページまで検索結果から消す事故につながりますし、改善しないままトライ&エラーを繰り返す間の機会損失(売上減)が、対策費用を上回ることもあります。検索流入が売上に直結する企業サイトやECサイトでは、早めに専門家へ相談したほうが結果的に安く済む場面が多いです。
まとめ
- 改ざんの駆除は第一歩に過ぎず、落ちた順位を戻すにはシステム復旧とは別の技術対策が要る
- その前に、ブラックリスト登録・手動による対策・本来の記事の圏外化の3点を見れば、戻せる見込みかどうかは判断できる
- 具体策はrobots.txt・410 Gone・URL削除リクエストを同時に走らせること
- 復旧には2〜3か月かかる。最初のひと月は動かないので、焦らず週1回の記録を続ける
- 侵入経路をふさいで再発を防がない限り、せっかく戻した順位もまた落ちる
「改ざんを駆除すれば順位は戻る」という思い込みは、復旧を遠回りにします。正しい対策を打ち、中長期で見守る。それができれば、下落した検索順位は確実に回復へ向かいます。
- 改ざん被害状況の診断(改ざん起因の下落かSEO変動かの切り分け)
- Search Consoleのインデックス汚染URL調査・パターン分類
- 不正URLパターンを対象としたrobots.txtの設計と実装
- 410 Goneを返すWordPress専用プラグインの開発・導入
- Search Console「削除ツール」からのURLパターン削除申請
- ブラックリスト・手動による対策の有無チェックと再審査リクエスト対応
- 正常ページを巻き込まないパターンマッチの検証・テスト
- クロールバジェット最適化とインデックス回復のモニタリング
- 復旧経過レポートの作成(インデックス件数・流入推移の可視化)
合同会社キューブリック まずは状況をお聞かせください。作業前に内容と金額をお伝えし、追加料金はいただきません。
代表社員 / WEBエンジニアWordPressで構築されたサイトを対象とし、不正ファイルの駆除(セキュリティ会社の領域)が完了済みであることを前提とします。被害規模やインデックス汚染の件数、手動ペナルティの有無によって工数と費用が変動するため、まずはSearch Consoleの状況を拝見したうえで無料でお見積りいたします。

