この記事は、自社サイトのSEO運用を実測した記録シリーズの1本である。訳ありOKのsitemapで、Search Consoleがエラーを出し続けていた原因を調べたところ、転送(308)されるURLをそのまま<loc>に載せていたことが分かった。2026年9月に1URLずつ実測して直した。
この記事で分かること
- なぜsitemapに載せたURLが検索エンジン側でエラー扱いになったか
- 同じドメイン内で末尾スラッシュの規約が混在していた実態
- 一括修正がなぜさらに壊すのか、1URLずつ実測する理由
この記事で分からないこと(正直に書く)
- sitemapプロトコル自体は
<loc>が返すべきHTTPステータスを定義していないため、どのステータスまでを許容するかは検索エンジンの実装依存であり、仕様書だけでは断定できない
sitemapのURLが転送先を指していなかった
訳ありOKのsitemapについて、Search Console側でエラー件数5件の状態が続いていた。原因を調べると、/glossaryと/blog/配下の4本のURLが末尾スラッシュ無しでsitemapに登録されており、本番側はそのURLに対して末尾スラッシュ付きのURLへ308で転送する設定になっていた。sitemapに載せるべきは転送先の、200を返すURLである(出所: 自社の運用記録、確認日2026-09-06)。
同じドメイン内でスラッシュの規約が混在していた
厄介だったのは、末尾スラッシュの扱いがサイト全体で統一されていなかったことである。/contact /about /tokushoho /privacy /termsはスラッシュ無しの状態で200を返す一方、/glossaryや/blog/配下はスラッシュ有りの状態で200を返す。ページの種類によって規約が違うため、どちらか一方のルールで一括変換すると一部が壊れる(出所: 自社の運用記録、確認日2026-09-06)。
一括で直すと別の5件が壊れる
実際に、末尾スラッシュを一括で追加する修正を行ったところ、今度は元々スラッシュ無しで200を返していた5件が壊れるという結果になった。そこで方針を変え、sitemapに載っている各URLに対して実際にHTTPステータスを取得し、200を返さないものだけを1件ずつ直す方法に切り替えた(出所: 自社の運用記録、確認日2026-09-06)。
1
2
for u in $(curl -s $SITEMAP | grep -o "<loc>[^<]*" | sed 's/<loc>//'); do
c=$(curl -s -o /dev/null -w '%{http_code}' "$u"); [ "$c" != 200 ] && echo "$c $u"; done
このように全URLのステータスを実測してから直すことで、一括変換による副作用を避けられる。
sitemapプロトコル自体は転送を禁じていない
sitemaps.orgのプロトコル仕様を確認すると、<loc>は「ページのURL」を示す必須タグとされ、プロトコルで始まり2,048字未満であることなどが定義されている一方、そのURLがどのHTTPステータスを返すべきかまでは規定されていない(出所: sitemaps.org「Protocol」https://www.sitemaps.org/protocol.html、確認日2026-09-06)。つまり転送されるURLをsitemapに載せること自体は仕様違反として機械的に弾かれるわけではなく、検索エンジン側の解釈によってエラー扱いになる。この「仕様には書かれていないが実務上のエラーになる」という落差が、今回のような見落としを生みやすくしている。
再発防止:sitemapは定期的に全URL実測する
sitemapに載せるURLは公開時点だけでなく、サイト構造が変わった後も200を返し続けているかを定期的に確認する必要がある。前述のスクリプトのように全URLのステータスコードを機械的に洗い出し、200以外を見つけた時点で1件ずつ実測して直す、という手順を定着させた(出所: 自社の運用記録、確認日2026-09-06)。
sitemap.xmlが存在することとSearch Consoleへの送信は別問題である。詳しくはこの記事にまとめている。同じ生成パイプラインの記事の効き目が落ちていた話はこの記事を参照してほしい。sitemapやSearch Consoleの運用について相談したい場合は、お問い合わせから編集部まで連絡してほしい。
よくある質問
Q1. なぜsitemapに308転送されるURLがあるとエラーになったのか
sitemapに登録していたURLの一部が、本番側で末尾スラッシュ付きのURLへ308で転送される設定になっていた。sitemapに載せるべきは転送先の200を返すURLであり、転送元を載せていたことがエラーの原因だった。
Q2. 末尾スラッシュを一括で追加すれば直るのか
直らない。同じドメイン内でも、末尾スラッシュ無しで200を返すページと、有りで200を返すページが混在していたため、一括で変換すると別のURLが新たに壊れる。
Q3. 直っているかはどうやって確認したのか
sitemapに載っている全URLに対して実際にHTTPステータスコードを取得し、200を返さないものを1件ずつ特定して直した。
Q4. sitemapの仕様書には転送の扱いが書かれているのか
書かれていない。sitemaps.orgのプロトコル仕様は<loc>を「ページのURL」と定義しているだけで、返すべきHTTPステータスまでは規定していない。この落差が実務上のエラーにつながっている。