MENU

wp-sitemap.xmlが404になるときの直し方|原因は分からないまま、プラグインの設定1つで解決しました

wp-sitemap.xmlが404になるときの直し方|原因は分からないまま、プラグインの設定1つで解決しました
目次

先に結論

WordPressが標準で用意するはずのサイトマップ /wp-sitemap.xml が、私のサイトでは404(ページが見つかりません)になりました。

直った方法は、これです。

  1. プラグイン「XML Sitemap & Google News」を入れる
  2. 設定 →「XML サイトマップ」→ サーバーを「WordPress」から「プラグイン」に切り替える
  3. 同じ画面の「リライトルールを再生成」を押す

これで /sitemap.xml が表示されるようになりました。

正直に書くと、404になった原因は、いまも分かっていません。 分かったのは「何が原因ではなかったか」と「どうすれば直るか」だけです。同じ症状の方の役に立つよう、試した順に全部書きます。

起きていたこと

サイトを作った直後、Search Consoleにサイトマップを登録しようとして気づきました。

確認したもの結果
/wp-sitemap.xml404
/sitemap.xml/wp-sitemap.xml に転送されて404
robots.txt存在しない /wp-sitemap.xml をサイトマップとして案内していた
記事のページ正常に表示される

記事は普通に見られるのに、サイトマップだけが出ない状態です。しかも robots.txt は「サイトマップはここです」と、存在しないアドレスをGoogleに伝え続けていました。

環境は、エックスサーバー、テーマはSWELL、プラグインはセキュリティ系とお問い合わせフォームの2つだけでした。

試して、効かなかったこと

直るまでに試したことを、順番に書きます。どれも効きませんでした。

試したこと結果分かったこと
キャッシュを疑って、別の方法でアクセスし直す404のままキャッシュではない
パーマリンク設定を保存し直す(2回)404のままよく紹介される方法だが、効かなかった
セキュリティプラグインを一時的に止める404のままプラグインの干渉ではない
「検索エンジンがサイトをインデックスしないようにする」の設定を確認チェックは入っていなかったこの設定が原因ではない
/?sitemap=index という別の形式でアクセスこれも404アドレスの書き換えの問題ではない

最後の1行が、切り分けの決め手でした。

「パーマリンクを保存し直す」という対処は、アドレスを書き換える仕組み(リライトルール)が壊れているときに効きます。ところが /?sitemap=index は、その仕組みを通らない形式です。それも404ということは、リライトルールではなく、WordPressのサイトマップ機能そのものが動いていないことになります。

返ってきた404がWordPressの画面だったことからも、サーバーではなくWordPressの側の問題だと分かりました。

もう1つ、セキュリティプラグインの「ユーザー名漏えい防止」という機能も疑いました。WordPress標準のサイトマップには投稿者の一覧が含まれるからです。一時的にオフにして確かめましたが、無関係でした。 すぐ元に戻しています。

応急処置:RSSフィードを登録する

原因が分からない間は、RSSフィードをサイトマップの代わりに登録していました。

Search Console → サイトマップ →「feed」と入力して送信

Search Consoleは、RSSフィードもサイトマップとして受け付けます。登録すると「成功しました」になりました。

ただし、これは長く使える方法ではありません。

フィードに入るのは、最新の10件だけです(設定 → 表示設定 →「RSS/Atomフィードに表示する最新の項目数」の初期値)。記事が15本になった時点で、Googleに伝わっていたのは11ページ分でした。記事が増えるほど、伝わらない記事が増えていきます。

解決:プラグインの「サーバー」設定を切り替える

プラグインを入れただけでは、直りませんでした

「XML Sitemap & Google News」というプラグインを入れて有効化しました。それでも404のままでした。

理由は、あとで分かりました。このプラグインは、初期設定ではWordPress標準のサイトマップ機能をそのまま使うようになっています。標準の機能が動いていない私のサイトでは、プラグインを入れても同じ結果になるわけです。

「サーバー」を「プラグイン」に切り替える

設定 →「XML サイトマップ」を開くと、「一般」タブの一番上に「サーバー」という項目があります。

選択肢意味
WordPress(初期値)WordPress標準の機能でサイトマップを作る
プラグインプラグイン自身がサイトマップを作る

ここを「プラグイン」に変えて保存しました。

続けて、同じ画面の右側「ツール」にある「リライトルールを再生成」を押します。

結果

確認したもの前後
/sitemap.xml404表示される
記事の収録—公開している記事がすべて入っている
robots.txt の案内存在しないアドレス/sitemap.xml に自動で変わった

robots.txt は自分では触っていません。プラグインの設定を変えたら、案内も正しいアドレスに変わりました。

そのあと、Search Consoleに sitemap.xml を送信しました。数日後に「成功しました」になり、公開しているページがすべて検出されています。

ついでにやったこと:投稿者のサイトマップを外す

サイトマップの中身を見ると、記事・固定ページ・カテゴリーのほかに、投稿者のページも入っていました。

一人で書いているブログでは、投稿者のページは記事一覧と同じ内容になるだけです。同じ設定画面の「Disable sitemaps」で「投稿者」にチェックを入れて、外しました。

原因について

繰り返しになりますが、なぜWordPress標準のサイトマップが動かなかったのかは、分かっていません。

分かっているのは、次のことだけです。

  • キャッシュではない
  • リライトルールではない(パーマリンクの保存し直しでは直らない)
  • セキュリティプラグインではない
  • 「検索エンジンに表示しない」設定ではない
  • サイトマップを作る役目をプラグインに移すと、直る

原因が分からないまま使い続けることに、すっきりしない気持ちはあります。ただ、サイトマップの役目は「Googleに記事の一覧を伝えること」です。それが果たせていれば、どちらの仕組みで作られているかは問題になりません。

まとめ

  • /wp-sitemap.xml が404になり、パーマリンクの保存し直しでは直りませんでした
  • /?sitemap=index も404なら、リライトルールの問題ではありません
  • 応急処置としてRSSフィード(feed)をSearch Consoleに登録できますが、伝わるのは最新10件だけです
  • 「XML Sitemap & Google News」を入れ、サーバーを「プラグイン」に切り替え、リライトルールを再生成したら直りました
  • プラグインを入れただけでは直りません。 設定の切り替えが必要でした
  • 原因は、いまも分かっていません

この問題は、サイトを立ち上げたときに詰まった12か所のうちの1つでした。ほかの11か所はエックスサーバーでWordPressを始める手順にまとめています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次