WordPressでサイトを運営するなら、Googleにコンテンツを正しく認識してもらうための「XMLサイトマップ」は必須です。
そのサイトマップを自動で生成・通知してくれる定番プラグインが「XML Sitemap Generator for Google」です。

設定も簡単で非常に便利なプラグインですが、設定を終えていざ「sitemap.xml」のURLにアクセスしてみると、なぜか「404 Not Found(ページが見つかりません)」のエラーが…!
今回は、この「サイトマップ404エラー」に直面した筆者が、原因を特定し、SEOへの影響を最小限に抑えながら根本解決した方法を解説します。
よくある「404エラー」の解決策(しかし、今回は違った)
サイトマップの404エラーについて検索すると、「XML Sitemap Generator for Google」の公式フォーラムなどでは、いくつかの一般的な原因が挙げられています。
- WebサーバーがNginxである
- Nginxの場合、
sitemap.xmlを表示するための「リライトルール(URLの書き換え設定)」を手動でサーバー設定ファイルに追加する必要がある。
- Nginxの場合、
- キャッシュプラグインとの干渉
- 「W3 Total Cache」などのキャッシュプラグインが、サイトマップの生成を邪魔していることがある。
- パーマリンク設定の更新
- 何らかの理由でパーマリンク設定(
.htaccessファイル)が古くなっている。
- 何らかの理由でパーマリンク設定(
私のサイト環境は「Apache」サーバーであり、キャッシュプラグインも使っていなかったため、1と2は該当しませんでした。
そこで、3つ目の「パーマリンク設定の更新」を試すことにしました。
これは、WordPressの管理画面から「設定」→「パーマリンク設定」を開き、何も変更せずに「変更を保存」ボタンを押すだけで、設定ファイルが更新されるというものです。
しかし、それでも状況は変わりませんでした。
根本原因:「パーマリンク構造」が「基本」だった
万策尽きたかと思いましたが、パーマリンク設定画面をよく見ると、自分のサイトのパーマリンク構造が「基本」に設定されていることに気づきました。
「基本」設定とは、URLが https://example.com/?p=123 のような、非常にシンプルな形式になる設定です。

実は、これが404エラーの根本的な原因だったのです。
なぜパーマリンクが「基本」だとNGなのか?
「XML Sitemap Generator for Google」プラグインは、多くの場合、サーバー上に「sitemap.xml」という物理的なファイルを作成しません。
その代わり、「URL書き換え(リライト)」という仕組みを使っています。
これは、訪問者(やGoogle)が .../sitemap.xml というURLにアクセスしたときに、そのアクセスをWordPressのプログラムが横取りし、「今から動的にサイトマップを生成して表示します」という処理を行う仕組みです。
ところが、パーマリンク設定の「基本」(?p=123)は、WordPressで唯一、この「URL書き換え」機能を一切使用しない設定なのです。
そのため、サーバーは .../sitemap.xml へのアクセスが来ても、「そんなファイルはサーバー上に存在しませんよ」と正直に「404 Not Found」エラーを返していたのです。
パーマリンク変更の不安と「自動301リダイレクト」という解決策
原因はわかりましたが、ここで最大の壁にぶつかります。
「サイト運営途中でパーマリンク(URL)を変更するのは、SEO上非常に危険ではないか?」
URLが変わると、Googleがそれまで蓄積してきた記事の評価や、外部リンク(被リンク)がリセットされてしまうリスクがあります。
しかし、ご安心ください。
WordPressには、この問題を解決する非常に強力な機能が備わっています。
「基本」(.../?p=123)から他のパーマリンク設定(例: .../sample-post/)に変更した場合、WordPressは古い ?p=123 へのアクセスを自動で検知します。
そして、「この記事ID(123)の新しい住所はこっち(.../sample-post/)ですよ」と、「301リダイレクト(恒久的な転送)」を自動で行ってくれます。
この301リダイレクトにより、古いURLのSEO評価は新しいURLへ安全に引き継がれます。
では、どのようなパーマリンクにすればよいか?
サイトマップの問題を解決し、SEOにも配慮したパーマリンク構造を選ぶ必要があります。
理想(ベスト)な案:「カテゴリー/記事名」
最も理想的なパーマリンク構造は、「カスタム構造」で /%category%/%postname%.html (または /%category%/%postname%/)と設定することです。
- 例:
https://example.jp/gourmet/ssaits.html
これなら、URLを見るだけで「グルメカテゴリの、SSAITSというお店に関する記事だな」とユーザーも検索エンジンも一目で内容を理解できます。
問題点:日本語URL問題
しかし、この設定には大きな落とし穴があります。
これまで記事を投稿する際、URLの「スラッグ」を意識せず、日本語タイトルのままにしていた場合、URLは以下のようになってしまいます。
- 例:
.../gourmet/【青梅の美味しいお店】サイツ.html
このURLをコピー&ペーストすると、.../gourmet/%E3%80%90... のように、長くて汚いURL(パーセントエンコーディング)に変換されてしまい、見栄えが最悪です。
対策1(推奨):全記事のスラッグを英語に修正する
![[画像:WordPressのスラッグの位置]](https://ssaits.jp/promapedia/wp-content/uploads/2025/10/image-12.png)
もし、記事数がまだ数十件〜百数十件程度であれば、今からでも全記事のスラッグを英語(ローマ字)に手動で修正することを強くお勧めします。
記事の編集画面で「スラッグ」を日本語から英語(例: ssaits)に変更するだけです。
「記事のURL(スラッグ)を変更したら、それこそSEO評価がリセットされるのでは?」と心配になるかもしれませんが、これも大丈夫です。
WordPressは、記事のスラッグ変更も検知し、古い日本語スラッグのURLから新しい英語スラッグのURLへ、自動で301リダイレクトを実行してくれます。
手間はかかりますが、これがサイトの将来を考えた最も正しい対応です。
対策2(次善の策):記事数が多すぎて修正が非現実的な場合
/%category%/%postname%.html という形式がおすすめではありますが、「もう何千記事もあって、全記事のスラッグ修正は無理…」という方もいるでしょう。
その場合は、記事名をURLに含めるのを諦め、「記事ID」を使うという手があります。
しかし、/%post_id%.html(例: .../123.html)だけだと、URLからまったく内容が推測できなくなってしまいます。
例: https://example.jp/123.html
ここで、URLにキーワードが入ることのSEOへの影響について、Googleの検索責任者であるジョン・ミューラー(John Mueller)氏は、「(検索順位への影響は)非常に非常に小さな要因(a very, very lightweight factor)だ」と公言しています。[1]https://www.seroundtable.com/video-12-30-2016-23218.html 2025年10月24日確認。
とはいえ、SEOへの影響が小さくても、ユーザーがURLを見て内容を推測できる「ユーザーフレンドリー」であるに越したことはありません。
そこでおすすめなのが、「カテゴリー/記事ID」という折衷案です。
- カスタム構造:
/%category%/%post_id%.html - 例:
https://example.jp/gourmet/123.html
これなら、「グルメカテゴリの123番の記事」ということが分かり、IDだけの場合よりはるかに親切です。記事タイトルを自由に変更してもURLが変わらないため、管理も非常に楽になります。
この設定を使う場合、もしカテゴリー名が日本語であれば、カテゴリーのスラッグも必ず英語に設定してください。

先ほどの記事と同じように、ひと手間かかりますが、それであっても大量の記事のスラッグをひとつずつ修正していくよりかははるかに楽です。
まとめ
今回は「XML Sitemap Generator for Google」の404エラーという問題から、WordPressサイト運営の根幹である「パーマリンク設定」の見直しに至りました。
- サイトマップ404エラーの多くは、パーマリンク設定が「基本」であることが原因。
- 「基本」設定では、サイトマップ生成に必要な「URL書き換え」機能が動作しない。
- パーマリンクの変更は、WordPressの「自動301リダイレクト」機能により、SEO評価を維持したまま安全に行える。
- 記事のスラッグ変更も自動で301リダイレクトされる。
パーマリンク設定は、サイト開設時に「とりあえず基本で…」と後回しにしがちな項目ですが、後から変更するのは大きな手間がかかります。
これからサイトを開設する方は、最初から /%category%/%postname%/ などを設定し、「記事投稿時は必ずスラッグを英語にする」という運用ルールを決めておくことを強くお勧めします。
注
| ↑1 | https://www.seroundtable.com/video-12-30-2016-23218.html 2025年10月24日確認。 |
|---|

