ブログ › IT

Googleにインデックスされない原因、正体はhreflangのスラッシュ二重だった

IT 2026-09-24 · 読了3分
この記事の言語 KOJAEN

このブログは韓国語・日本語・英語の3言語で運営している。だから記事を1本公開すると3つのURLができる(例:/ko/記事名/、/ja/記事名/、/en/記事名/)。この3つが「同じ記事の別言語版だ」とGoogleに伝えるタグが別にあって、これをhreflangと呼ぶ。

Googleは自分のサイトを「検索結果に出してよいページ」と判断すると、インデックス(index)に入れる。インデックスに入らなければ、どれだけ記事を書いても検索からは絶対に入ってこない。だからSearch Console(Googleが自分のサイトをどう見ているか確認するツール)をたまに開くのだが、数日前に開いたら「失敗」ラベルが付いた項目が44件も出ていた。

カテゴリが5つに分かれていたが、名前だけ見てもどれが本当の問題なのか全く見当がつかなかった。

  • 代替ページ(適切な canonical タグあり) — 20件
  • ページにリダイレクトがあります — 13件
  • 重複しています。ユーザーにより、正規ページとして選択されていません — 5件
  • クロール済み - インデックス未登録 — 4件
  • 重複しています。Google により、ユーザーがマークしたページとは異なるページが正規ページとして選択されました — 2件

44件。最初はサイト全体に問題があるのかと思った。

でも一つずつURLを開いてみると話が違った。「代替ページ(適切な canonical タグあり)」と「ページにリダイレクトがあります」は、ほとんどがwww.が付いていたりhttp://で始まるアドレスだった。こういうものは元々本物のアドレス(https://glitch-apple.com/...)へ自動で転送(リダイレクト)するようにしてあって、その本物のアドレスさえインデックスされていればそれで正常。Googleが「失敗」と書くから驚いただけで、33件(20+13)はそもそも正常な動作だった。

本当の問題は残りの中に紛れていた。「重複しています。ユーザーにより、正規ページとして選択されていません」のリストに、こんなアドレスがあった。

https://glitch-apple.com/ko//
https://glitch-apple.com/ja//

スラッシュが2つある。こんなアドレスを作った覚えはないのに、Googleは一体どこで見つけてきたのかしばらく考えた。

答えはサイト自体の<head>の中にあった。ホーム画面のソースを開いてみると:

<link rel="alternate" hreflang="ja" href="https://glitch-apple.com/ja//">
<link rel="alternate" hreflang="en" href="https://glitch-apple.com/en//">

自分で「日本語版はここにある」と伝えているタグの中に、スラッシュが2つ入っていた。Googleはこのタグをそのまま信じてたどり着き、存在しない二重スラッシュのアドレスを「発見」して、どこにリダイレクトされるかも確認し、結局「正規URLが不明な重複ページ」に分類してしまったわけだ。自分が作ったタグがGoogleを変なところへ連れて行った格好になる。

hreflangタグが実際に指していたスラッシュ2つのアドレスと、修正後の正常なアドレスの比較

原因はコード1行だった。

url: `/${l}/${suffix}/`,

パスの後に何かが付くページ(/ja/blog/のような)は問題ないが、ホーム画面のように後ろに何も付かないページは、このsuffixの部分が空文字列になり、/ja/ + “ + /がつながって/ja//になってしまう。ちょうど韓国語・日本語・英語のホーム画面3つだけがこれに引っかかっていた。

url: suffix ? `/${l}/${suffix}/` : `/${l}/`,

空文字列のときはスラッシュを1つだけ付けるように変えた。それだけだった。

修正したコードのdiff — url生成部分に三項演算子を1行追加

デプロイしてもう一度ソースを開くと、hreflangの値が全部正常になっていた。あとはGoogleが再クロールすれば、あの二重スラッシュのアドレスも自然に整理されるはずだ。

今回感じたのは、「失敗」という言葉をそのまま信じてはいけないということだった。44件のうち、本当に自分が直すべきだったのは2、3件だけで、残りは元々正常か、コードとは関係ない問題(新しく買ったドメインだからGoogleの信頼がまだ十分に積み上がっていないこと)だった。全部同じ「失敗」ラベルが付いているから、一つずつ開いてみるまでは何が本物か見分ける方法がなかった。

#SEO#hreflang#Search Console#Astro

コメント