SEO対策でサイトのXMLマップをGoogleなどの検索エンジンに送るのは今や常識です。
WordPressでもプラグインを使うことで、サイトマップのXMLを自動生成可能です。
※WordPressはバージョン5.5より標準でサイトマップXML(wp-sitemap.xml)の出力対応しましたが、まだまだ機能的には物足りないようです
そのプラグインの1つ「XML Sitemaps(旧名:Goolgle XML Sitemaps)」を使ってサイトマップXMLを生成しようとしたら、404エラーが発生しました。
今回、私が404エラーを解消するまでに試したこと、解消した方法について解説いたします。
★404エラーが発生した環境
・WordPressバージョン:5.7.2
・XML Sitemapsバージョン:4.1.1 [ダウンロード]
・マルチサイト化のWordPress
「sitemap.xml」にアクセスしたら404エラー発生
プラグイン「XML Sitemaps」を導入して「sitemap.xml」にアクセスしたら404エラーが発生しました。
404エラーの問題を切り分ける
問題を切り分けるため、以下の事実を検証しました。
- 「XML Sitemaps」を3つのWordPressに導入した
- 3つの内、2つはマルチサイト化、1つはシングルサイト
- 問題が発生したのは1つのマルチサイト化WordPress
- 更にそのマルチサイト化WordPressで、初期ブログ(メインドメイン)では、404エラーが発生しなかった
- 初期ブログ以外のサイトでは、確認したものは全て404エラーが発生(全てのサイトを確認してませんが、ほぼ404エラーだと推測できます)
- テーマによる差異は見られなった(「SWELL」と「Cocoon」を使用)
以上の事から、1つの結論を導きました。
全てのWordPressと「XML Sitemaps」は同じバージョンです。
また、片方のマルチサイト化WordPressでは、全てのサイトでエラーが発生しない事から、バージョンやサーバー環境によるものではないと考えられます。(同じサーバーのウェブサーバー、データベースを使用してます)
したがって、この問題はバージョン依存ではなく、何らかの設定で解決できると判断し、色々試行錯誤してみる事にしました。
エラー解消のため、試した事
以下の事を調べて試してみました。
- 「XML Sitemaps」の無効化・再度有効化
- 「XML Sitemaps」の削除と再インストール
- 直下ディレクトリの「sitemap.xml」「sitemap.xml.gz」を削除
※これは、以前生成されたファイルの名残だと思います。現在の「XML Sitemaps」では実際にファイル生成されません - 「index.php?xml_sitemap=params=」でアクセス
※XMLが表示されるものの、階下のリンクがやはり404エラーなので使えない - 「.htaccess」を見直す
- 「wp-sitemap.xml」にリダイレクトされていたので「add_filter( ‘wp_sitemaps_enabled’, ‘__return_false’ );」を追加してリダイレクトを停止
以上を試しましたが、解決しませんでした。
「XML Sitemaps」のバージョンを、現在の4系から3系(3.4.1)へのダウングレードしたら解決したという情報もありましたが、そもそも4系バージョンで動作しているので、この手段は最終手段として、試すのは先送りしました。
「パーマリンク設定」で404エラーを解消!
WordPressの「パーマリンク設定」を、何も変更せずにそのまま「変更を保存」を押したら解決しました!
以前、別件でWordPressのページが突然404エラーになった時にも、同様に更新したら解決しましたが、まさかこんな事で直るとは思いませんでした。
詳しい理屈は分かりませんが「sitemap.xml」を動的に生成しているという事で、パーマリンクが関係しているのかもしれません。
ともあれ良かったです😊
<余談>そもそも何で「XML Sitemaps」を使うことになったか?
とりあえず解決しましたが、余談話です。
そもそも何で「XML Sitemaps」を使うことになったか?
先程少し説明しましたが、私は複数のWordPressを運用してます。
以前、その中の1つで、今回同様に404エラーが出ました。
そこで当時、「Google XML Sitemap Generator」という別のサイトマップXML生成プラグインを使う事にしました。
ところが先日、「Google Search Console」にて大量の除外ページが発生していました。
色々調べた末、やはり「XML Sitemaps」が最適だと思い、インストールしたら、今回のような404エラーが発生したわけです。
これはどのプラグインを使っていてもそうですが、「Google Search Console」はページに異変が起きると、メールでお知らせしてくれますが、こまめに状況をチェックする事をオススメします。