【SEO】herokuではsitemap.xmlが使えないので注意【Python+Django】

プログラミング

同じ過ちを犯す人がこれ以上増えないように記事として残しておきます。

まずは結論からです。

DjangoやRailsでアプリを作成し、herokuで公開している場合、サイトマップは使えません。

サイトに入ってきてもらえるように準備する(Rails, SEO)

検証した結果、確かにherokuではsitemap.xmlを使うことができませんでした。

ただし使えないという言葉には、語弊があるかもしれません。

実際に作成してみて分かったのですが、herokuでもサイトマップは作成できます。

ただしGoogleのサーチコンソールが認識してくれません。

頑張ってサイトマップを作成するロジックを作成しても、ページが読み込まれないのだから使えませんね。

herokuのsitemapをサーチコンソールが認識してくれない

  • heroku上でアプリを作成するところまでサポートする書籍やwebページは沢山あっても、sitemap.xmlまで書いているものはなかなかない。
  • もしheroku上に作成した場合、urlをサーチコンソールに送信しても、404と認識されてしまい、登録が失敗する。
  • 原因は静的なファイルではないため。Googleのbotが認識できない?

djangoやrailsでサイトマップを作成してもGoogle Web Master Toolであるサーチコンソールが認識してくれません。

私はこの情報を知らずに数日間一生懸命サイトマップを作成していました。

骨折り損のくたびれ儲けです。

「heroku sitemap」と調べればいくらでもサイトマップが使えないことを伝えてくれる先代のページがあったにも関わらず同じ過ちを犯してしまいました。

実際に作成したサイトマップのurlはこちらです。

https://emotional-search.herokuapp.com/emo/sitemap.xml/

そして、このurlをサーチコンソールに登録してみた画像が以下になります。

「サイトマップが読み込めませんでした」と出ます。

詳細を確認すると、404エラーとなるようです。

ページにアクセスするとわかりますが、サイトマップは表示されています。

これはherokuが静的なファイルにしかアクセスできないようになっていることが原因らしいです。

完全にherokuの仕様を理解した訳ではありませんが、心で理解したことにします。

(1週間かかってサイトマップを作っていたため、sitemapが使えないことを知り、少しテンションがおかしいです。)

herokuでsitemap.xmlを使う方法

その後、調べてみましたが、対策がないということではないようです。

外部ストレージを使います。

要するにherokuドメイン上にsitemapを作らず、別の場所に静的なサイトマップを置いておくということですね。

今回そこまでたどり着くことができませんでした。

sitemap.xmlはSEOにとってとても重要なものです。

Google先生にページのurlを伝えられなければ、どんなに良いコンテンツ、サービスを作成しても評価してもらえません。

なので早めに作成して、自分のサービスをよりGoogleに理解してもらうことをしてもらおうと思います。

今回その対策方法は載せられませんが、先代の偉人たちが残したドキュメントが沢山あるので、urlを貼っておきます。

[Rails5]Heroku環境でsitemap.xmlを設置する方法

【Rails】Heroku + S3でsitemapを利用する方法

Herokuでサイトマップ(sitemap.xml)を作りたい

最後に

私はPythonとDjangoとherokuでwebサービスを公開しています。

herokuとrailsに関する記事が多いですが、pythonとherokuに関する記事はそれほど多くありませんでした。

今回サイトマップを作成してみましたが、サイトマップの作成の仕方も今度記事に残しておこうと思います。

手を動かすことも大事ですが、プラットフォームの仕様に目を通ることも怠ってはいけないと反省しました。

以上です。