【SEO】検索結果ページのインデックスは危険？WordPressサイトでの対策法

## 意図しない検索流入が...SEOポイズニングの疑い
ある日、運用を引き継いたWordPressサイトのサチコをチェックしていると、日本語ではないデータが目に入った。
「あれ？なんでこんなキーワードで流入が？」
調査を進めると、検索結果ページ（`?s=`）がGoogleにインデックスされており、そこからアクセスが発生していた。しかも違法コンテンツっぽい中国語サイトのドメインも組み合わされて、SEOポイズニングの可能性が浮上...汗

:::note info
**SEOポイズニングとは？**
検索エンジン最適化（SEO）技術を悪用して不正なサイトを検索結果の上位に表示させ、閲覧したユーザーをマルウェアに感染させたり、詐欺サイトに誘導したりするサイバー攻撃手法です。
:::
参考：https://www.lanscope.jp/blogs/cyber_attack_cpdi_blog/20240530_20684/

## 検索結果ページのインデックスが危険な理由
WordPressはデフォルトで`?s=`パラメータを使ってサイト内検索を行う。通常、検索結果ページはユーザー向けの機能であり、検索エンジンに登録されるべきものではない。

しかし、これがインデックスされるとSEOに悪影響を与える理由は次の通り。

✅ **重複コンテンツの増加** → サイトの評価が下がる
✅ **クロールのリソースを浪費** → 重要なページが後回しに
✅ **スパムワードでの表示** → ユーザーに不信感を与える

### 特に問題なのは、SEOポイズニングの温床になること
悪意のある第三者が検索クエリを操作し、以下のようなスパムワードと組み合わせたページをインデックスさせることがある。

- **アダルト・違法コンテンツ**（例：「無料動画」）
- **ブランド乗っ取り**（例：「有名ブランド＋激安」）
- **詐欺的な金融情報**（例：「仮想通貨 詐欺」）

通常はこれらのスパムワードとサイトURLが組み合わさることで問題が発生するが、今回のケースではさらに悪質な手口が確認された。

### 検索クエリに別のドメイン名が埋め込まれていた
今回のケースでは、検索結果に次のような形で表示されており、意味不明な検索クエリの中にスパムサイトのドメインが埋め込まれていた。

> example.com/?s=迷魂剂使用方法(访问网站example.net).idhk.麻药多少钱(打开网站example.net).TYj3r


### なぜこんなことが起こるのか？
これは、不正サイトへの誘導を狙った悪意ある手口で、次のような影響を与える可能性がある。

- **スパムサイトの信頼性向上**（正規のサイトと関連しているように見せかける）
- **検索結果の乗っ取り**（関係のないサイトをスパムキーワードと結びつける）
- **クリック誘導**（検索結果を見たユーザーが誤ってスパムサイトへアクセスする）

### 具体的なリスク
こうした状態が続くと…

✅ **Googleから「不正な検索意図あり」と判断され、サイト全体の評価が低下**
✅ **スパムサイトと関連付けられ、検索結果でのクリック率が低下**
✅ **ユーザーが不信感を抱き、サイトのブランドイメージが損なわれる**

特に引き継いだサイトでは、過去の設定ミスや不要なページのインデックスが影響して気づかないうちに被害を受けているケースもあるため要注意！

## 検索結果ページがインデックスされていないか確認する
まずは、site検索やGoogle Search Consoleを使って状況をチェックしよう。

### Goolge検索で確認
```
site:example.com inurl:"?s="  
```
`example.com`に確認したいサイトのドメインを入力して検索、意図しない検索結果ページが表示されれば、インデックスされている可能性が高い。

### Google Search Consoleで確認
1. **「検索結果」** を表示
2. **「フィルタを追加」** をクリックして **「ページ」** を選択
3. **「次を含むURL」** の検索条件に **「?s=」** を入力して適用

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924179/e695df1d-71aa-46f8-a1ba-71f36972edb2.png)

上記で確認後に、もしページがインデックスされているなら、すぐに対策が必要だ。

## WordPressサイトの具体的な対策方法
### ✅ メタタグで`noindex, follow`を設定（最優先）
検索結果ページがインデックスされないよう`noindex`の設定を`functions.php`に追記する。

```
function noindex_search_page() {
    if (is_search()) {
        echo '<meta name="robots" content="noindex, follow">';
    }
}
add_action('wp_head', 'noindex_search_page');
```

この設定を行うと、検索エンジンは検索結果ページをクロールできても、インデックスには登録しなくなる。

### ✅ `robots.txt`でクロールを制御（補助的な対策）
`robots.txt`を編集し、検索結果ページのクロールをブロックする。

```
User-agent: *
Disallow: /?s=
Disallow: /search/
```

:::note warn
`robots.txt`だけではすでにインデックスされたページを削除できないので`noindex`の設定は必須。
:::

#### プラグインを使用している場合
SEO系のプラグインを使用している場合は、管理画面での設定も可能。

##### All in One SEOで`robots.txt`の記述を追加
ツールメニューの **「Robots.txt エディター」** から **「ルールを追加」** で下記の設定を追記する。

| ユーザーエージェント | 指示 | 値 |
|-----------|-----------|-----------|
| *       | Disallow       | /*?s=       |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924179/b5600b91-335a-4669-8e52-5c981f2bf5af.png)

##### Yoast SEOで諸々の設定を追加
設定メニュー **「高度な設定」** 内の **「クロールの最適化」** で下記の設定をONにする。
（Yoast SEOの方が細かく設定できるのでおすすめ！）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924179/7c871961-1c22-4733-8632-76f23fe04744.png)

## 最後に
検索結果ページのインデックスは、SEOポイズニングのリスクを高め、検索評価の低下を招く可能性がある。特に、引き継いだサイトでは過去の設定がそのまま残っていることが多いため、以下の点を必ずチェックしよう。

✅ **Google Search Consoleで`?s=`のインデックスを確認**
✅ **`noindex, follow`の設定で検索エンジンから除外**
✅ **`robots.txt`でクロールをブロック（補助的な対策）**
✅ **Google Search Consoleで不要なインデックスを手動削除**

サイトのSEO評価を守るためにも、今すぐチェック＆対策を！

アルビド・ジャパン株式会社では、新規WordPressサイトの開発から、既存サイトの運用引き継ぎまで幅広くサポートしています。お悩みのことや疑問点があれば、どんな小さなことでもお気軽にご相談ください！