【備忘】Googlebot Smartphoneの5xxエラー原因と対策(Netlify編)
Abstract
異変
当ブログへアクセスは、ほぼ検索エンジンからの流入が占めています、特にGoogle先生。そのためGoogle Search Console上で検索インデックスに登録されているか、またどの検索ワードが人気なのか、を時々チェックしているのですが、最近、妙な傾向に気づきました。それはインデックスに登録済みのページが異常に減少しているというもの。これはまずい。。。検索インデックスの登録から外れること=検索結果に表示されなくなるということ。すぐに原因を特定して対策したい、ということで調査開始しました。
先に結論
先に結論を書いてしまうと、Netlify側のPre-renderingの設定を無効にしたところ、解消しました。この設定は当サイトのような事前ビルド型のJamstack構成の場合、意味をなさないので無効化しても問題ないと思われます。
発生事象
Search Console上で確認できた事象は、「サーバーエラー(5xx)」が急増し、それに起因してインデックス登録から除外されていることが分かりました。しかし、エラーが発生しているとされているページをブラウザで確認する限り、特にエラーは再現しません。
いろいろ調べていくうちに、UA(UserAgent)を "Googlebot Smartphone" とすることで、Googleのモバイル向けクローラーと同等のアクセスが可能になることが分かりました。そこでコマンドラインから下記CURLコマンドを実行し挙動を確認。
curl -A "Googlebot Smartphone" -I https://www.swisteria.com/posts/nuxt3-microcms/
結果、確かに502 Bad Gatewayが発生することを確認。ただし、毎回ではなく不安定な挙動を示している。一旦、再現確認はできたので、一歩前進としましょう。
原因・解消法を探す
次に原因と解消法の調査。これが非常に苦戦しました。問題がどこにいるのか、考えられる場所としては、
- プログラムの作り
- Framework(Nuxt3)
- プラットフォーム(Netlify)
- ドメインの設定
Copilot君と会話したり、私が持っているほかのサイト(Nuxt3で作ったもの/作っていないもの、独自ドメインを設定しているもの/していないもの)でも検証したりするものの、光は見えず…
次に類似事象がないものかと、それぞれのサポートコミュニティをさまよっていたところ、Netlifyのサポート上に次のやり取りを見つけました。
事象としては、私が直面しているものと同じように、Google Search Console上でサーバーエラー(5xx)が発生しているというもの。一通りのやり取りの後、Support Engineerの方から下記 回答がありました。
I think I know where the error is coming from. Since your site is static (it’s a Docusaurus site which is based on React), there was no reason for server side error codes. But i checked now, and you’ve enabled Pre-rendering: Netlify App. If you disable that, the errors should be gone.
ざっくり日本語訳すると、こんな感じ。
原因が分かったと思います。あなたのサイトは静的なので、サーバーサイドエラーが起きる要因はないはずです。しかし今 私が確認したところ、Netlify上のPre-rendering設定が有効になっているようです。これを無効にすれば、エラーは解消するでしょう。
確信をついている気がする。でも、Pre-rendering設定って何だろう。
対応方法
調べてみるとPre-renderingは、主にSPA(Single-Page Application)や動的レンダリングを用いたサイト向けに提供されるオプション。サーバー側でHTMLを事前生成することで検索エンジンのインデックス登録を最適化する仕組みらしい。
このサイトは、SPA構成ではなく、ビルド時に全ページを事前HTML生成したものを、Netlify上に配置・配信するSSG(Static Site Generator)によるJamstack構成をとっているため、Pre-renderingは必要ありません。にもかかわらずその設定が有効となっていたが故に、かえってそれが悪さをして、検索エンジンのインデックス登録を阻害していたようです。困ったね。
NetlifyのBuild & deploy settings > Post processing > Prerendering からこの設定を無効化し、再度CURLコマンドからGoogleのモバイル向けクローラーとしてアクセスしたところ、エラーは再現しなくなりました。
その後の状況
対応後、Google Search Console上から再クロールのリクエストを投げて数日が経過。「サーバーエラー(5xx)」の件数は減少傾向にあります。少し時間はかかるかもしれませんが、このまま経過を観察し、最終的にエラーが消えるか見守ります。
Comments