SearchConsoleのサイトマップエラー
ウェブサイトの運営者にとって、SearchConsole のエラーは見過ごせない内容ですよね。今回はその SearchConsole で出たエラーと原因を紹介します。
エラー内容
上図は Google SearchConsole の『サイトマップ』画面です。ステータス項目にエラーが出ています。たまたま早く気がついて良かったのですが、数か月も放置されていたら本当に血の気が引く内容ですよね…
結論
最初に結論から!
plugin load filter の誤用でした…
『サイトマップを生成する機能は、管理画面のみに限定してはならない』です。 用法用量を守り、上図のように正しく設定していれば何も問題は起きません。
以上!この説明で納得したかたは早く直してあげてくださいね。
以下はもう少し詳しく掘り下げた内容です。
環境
- WordPress 5.3.2
- Google XML Sitemaps 4.1.0(プラグイン)
- plugin load filter 3.1.1(プラグイン)
原因の特定
エラー内容の読み取り
SearchConsole 上でもう少し詳しく見てみると、『サイトマップがHTMLページです。』とありました。確かに Google XML Sitemaps プラグインは、HTML形式のサイトマップも出力するオプションはありますが、XML が急に HTML に変化するとは思えませんね。
サイトマップの確認
では、実際にサイトマップを確認するしかないですね!Google XML Sitemaps の場合は、ルートページの後ろに /sitemap.xml を付けると確認できます。
https://sigma-gate.com/sitemap.xml
さて、表示したらどうなったかというと…『トップページ』が表示されてしまいました。詳しくは、『トップページに301リダイレクト』されていました。この動作は WordPress のテーマや .htaccess の記述によって違いがあるかもしれません。
意図した挙動ではないですが、さきほどの『サイトマップがHTMLページです。』のエラーが出ているのは納得ができました。トップページが出ちゃっているわけですから…
.htaccessの確認
リダイレクトといえば、次は .htaccess を疑うことになるでしょう。今回はたまたま修正規模が大きく、スラッグ変更によるリダイレクトなど、細々としたコードを追加していました。
「どこかにミスコードを入れちゃったんだな~」と思い、作業を巻き戻したりコードを白紙にしても改善されませんでした…。つまり .htaccess が関係ないことは分かったわけです。
脳内リビジョン
.htaccess の当ては外れましたが、絞り込みが徐々に進んでいます。あとは、Wordpress の管理画面で何をやらかしたのか特定するだけです。ここまで来たら簡単でした。もう『プラグインの設定』しかないと…。
プログラマーってちょっと変わった生き物ですよね。『このプログラムファイル内の、このあたりの位置にある内容を変えた』という情報が意外と残っているものです。しかし、寝たり新しい情報を仕入れたりすると都合よく忘れます。
原因の修正
冒頭で少し触れましたが、『plugin load filter で Google XML Sitemaps を Admin Page のみに制限した』ことが原因でした。『Admin Page ではなく Normal Mode』にすれば正常に動作します。
WordPress はユーザーからリクエストがあったときにページを作成するという動的性の特徴があります。つまり、Google XML Sitemaps もそのルールに従い、ユーザーからリクエストがあったときにサイトマップが生成されているのでしょう。
まとめ
WordPress の仕様を考えれば「そりゃそうだろう」とツッコミがあるかもしれませんが、Laravel や Rails で遊んでいると動的生成のことをウッカリ忘れてしまったりします。
plugin load filter のような、読み込むプラグインを制御してくれる機能は、軽快に動作するウェブサイトを目指す人にとって、非常に便利なものです。
今後、私のようなウッカリさんの手助けになれば幸いです。