SWELLで「wp-sitemap.xml」が404になる原因と解決方法

SWELLを使っているWordPressサイトで、XMLサイトマップを確認しようと
https://example.com/wp-sitemap.xml
へアクセスしたところ、404エラーになりました。
最初は「サイトマップ生成プラグインを入れればいいのでは?」と考えました。
しかし、現在のWordPressにはXMLサイトマップを生成する機能が標準で備わっています。
それなのに、なぜ404になるのか。
実際のサイトで原因を調べてみると、SWELLの設定でWordPress標準のサイトマップ機能が停止されていました。
今回は、実際に調査して分かった原因と解決方法を紹介します。
結論:SWELLの「コアのサイトマップ機能を停止する」を確認
SWELLを利用していて /wp-sitemap.xml が404になる場合は、まずWordPress管理画面からSWELLの設定を確認してみてください。
SWELL設定 → 機能停止
と進み、
「コアのサイトマップ機能を停止する」
という項目を確認します。
ここにチェックが入っている場合、WordPress標準のXMLサイトマップ機能が停止されています。
WordPress標準のサイトマップを使用する場合はチェックを外して設定を保存します。
その後、
https://自分のドメイン/wp-sitemap.xml
へアクセスしてみてください。
今回のサイトでは、チェックを外して保存すると、すぐにWordPress標準のサイトマップが表示されました。
つまり、プラグインの追加は必要ありませんでした。
WordPressには標準のXMLサイトマップ機能がある
WordPressには、XMLサイトマップを自動生成する機能があります。
標準サイトマップのURLは基本的に、
/wp-sitemap.xml
です。
正常に動作していれば、投稿や固定ページ、カテゴリーなどのサイトマップが自動的に生成されます。
記事を追加するたびに手作業でXMLファイルを作り直す必要もありません。
そのため、特別な機能が必要なければ、WordPress標準のサイトマップを使うという選択肢があります。
なぜwp-sitemap.xmlが404になるのか調べてみた
今回、最初からSWELLの設定が原因だと分かっていたわけではありません。
まず確認したのは、WordPressの「検索エンジンでの表示」設定でした。
設定 → 表示設定 → 検索エンジンでの表示
を確認しましたが、「検索エンジンがサイトをインデックスしないようにする」にはチェックが入っていませんでした。
SEO関連のプラグインなども確認しましたが、サイトマップを停止している原因は見つかりません。
そこでサーバー側からWordPressの状態を調査しました。
その結果、WordPress内部ではサイトマップ機能が無効になっており、
add_filter( 'wp_sitemaps_enabled', '__return_false' );
という処理が登録されていることが分かりました。
さらに登録元を追っていくと、SWELL親テーマ内のサイトマップ停止処理にたどり着きました。
実際の処理は、SWELL側の設定に応じてWordPress標準サイトマップを無効化するものでした。
そこで管理画面を改めて確認すると、
「コアのサイトマップ機能を停止する」
にチェックが入っていました。
原因はここでした。
設定を変更するとwp-sitemap.xmlが表示された
「コアのサイトマップ機能を停止する」のチェックを外して保存。
その状態でもう一度、
/wp-sitemap.xml
へアクセスすると、正常にWordPress標準サイトマップが表示されました。
今回確認したサイトでは、投稿、固定ページ、カテゴリー、タグ、ユーザーなどのサイトマップが自動的に生成されていました。
404の原因を探していくと少し大掛かりな調査になりましたが、実際の解決方法は、
SWELLのチェックを一つ外すだけ
でした。
sitemap.xmlとwp-sitemap.xmlの違いは?
今回の調査中、別のWordPressサイトでは、
/sitemap.xml
というファイルも見つかりました。
一方、WordPress標準サイトマップは、
/wp-sitemap.xml
です。
名前が似ていますが、必ずしも同じ仕組みで作られているわけではありません。
実際に今回見つかった /sitemap.xml を確認すると、WordPressが生成したものではなく、以前に外部のサイトマップ生成サービスで作成してサーバーへ設置していた静的なXMLファイルでした。
つまり、
sitemap.xml がある = WordPressが現在自動生成している
とは限りません。
古くから運営しているWordPressサイトでは、過去に手作業で作ったサイトマップが残っている可能性もあります。
古いsitemap.xmlが残っていないか確認する
以前から運営しているサイトでWordPress標準サイトマップへ切り替える場合は、サーバー上に古い sitemap.xml が残っていないかも確認しておいた方がいいでしょう。
特に注意したいのは、
/sitemap.xml
と
/wp-sitemap.xml
の両方が存在するケースです。
前者が昔作った静的ファイルで、後者が現在のWordPressによる自動生成という可能性があります。
古い静的サイトマップは、作成後に追加した記事が含まれていなかったり、移転前のURLが残っていたりする場合があります。
ただし、sitemap.xml が存在するからといって、すぐに削除するのはおすすめしません。
まず、そのサイトマップを何が生成しているのか、robots.txtやGoogle Search ConsoleでどのURLを利用しているのかなどを確認してから整理した方が安全です。
サイトマッププラグインは必要?
wp-sitemap.xml が404になっているのを見て、最初に考えたのはサイトマップ生成プラグインの追加でした。
もちろん、サイトマップを細かく制御したい場合など、専用プラグインが必要になるケースはあります。
ただ、単純にXMLサイトマップをGoogleなどの検索エンジンへ知らせたいだけなら、まずWordPress標準機能で足りるかを確認してみてもいいでしょう。
今回のように標準機能が設定によって停止しているだけなら、新しいプラグインを追加しなくても解決できます。
機能がないから追加するのか、すでにある機能が止まっているだけなのか。
ここは切り分けて考えたいところです。
Search Consoleで「取得できませんでした」と表示されたら
wp-sitemap.xml がブラウザで正常に表示されるようになっても、Google Search Consoleでは一時的に「取得できませんでした」と表示される場合があります。
以前404だったURLを登録していた場合などは、設定を直した直後にSearch Console側の表示まで即座に変わるとは限りません。
まずブラウザで、
https://自分のドメイン/wp-sitemap.xml
が正常に表示されることを確認します。
そのうえでSearch Consoleに正しいサイトマップURLを登録し、Google側の再取得を待ちます。
何度も設定を変更するより、まずWordPress側で正常にサイトマップが生成されていることを確認することが大切です。
まとめ:プラグインを追加する前にSWELL設定を確認
SWELLを使っているWordPressで /wp-sitemap.xml が404になった場合は、まず、
SWELL設定 → 機能停止 → コアのサイトマップ機能を停止する
を確認してみてください。
今回のサイトでは、このチェックを外すだけでWordPress標準サイトマップが正常に表示されました。
また、長く運営しているサイトでは、昔作った静的な sitemap.xml がサーバーに残っている場合もあります。
WordPress標準サイトマップへ移行するなら、古いサイトマップとの重複も一度確認しておくと安心です。
不具合が起きると、新しいプラグインを追加して解決したくなります。
しかしWordPress本体にすでに備わっている機能なら、まずは、
「機能がない」のではなく、「どこかで止められていないか」
を確認する。
今回の wp-sitemap.xml の404は、まさにそのケースでした。
