-
Notifications
You must be signed in to change notification settings - Fork 2k
SEO対策のため、hreflangタグ、sitemapを追加する #5001
Comments
実装については、 こちら #4991 (comment) で @MaySoMusician さんが提案してくれた内容でいけるのではと思うのですが、いかがでしょう? |
これへの対応としては良いと思います! SEO的な話をするのであれば(前にも出したかもしれませんが)下記の構造化データへの対応をしても良いかもしれません。 |
@Nekoya3さん ただ本件は、検索結果が英語で表示される原因と解決に全く関係無いので、別で議論した方が良いかと思います。 |
PRとかできないので、自分のできることをやってみます。 hreflangを実装後のサイトは、次の様になっています。
このように、すべてのページを記載します。 このように、すべての言語ページにすべての代替言語へジャンプできるようにします。 なおx-defaultというのは、何か?という点ですが、ここはGoogleが言語判断できない時の地域に対して ということで、修正結果のみ掲載しました。 |
@harmo-snipe さん ja-basicは要らないのでしょうか? |
@goki90210 さん、こんにちは。 |
https://nuxt-community.github.io/nuxt-i18n/seo.html#improving-performance p.s. |
毎度言うだけで申し訳ないです。 hreflangタグについて、例えば、以下の考え方でen/ja/ja-Hira/ko/zh-CN/zh-TWはいかがでしょうか。
|
covid19/nuxt.config.ts
と修正することで
が出力されるところまでは確認しました。 PRは私のポリシーに合わない( |
|
hreflang="x-default" は、私の説明の通りGoogleで地域と言語が理解できないときに何を表示するかです。 この例から考えて、defaultは英語が妥当だと判断しました。 @goki90210 さん |
@kaizumaki harmo-snipeさんが指摘する通り、英語を表示すると多くのユーザーをカバーできると思いますが、本サイトでは英語が必ずしも最新の情報ではない点、日本語以外はあくまでも仮の訳であるという点を考慮すると、 |
そうですね。東京都に確認してみましょう。 |
@MaySoMusician さん
うわコレは、初めて知りました。(nuxt-i18nというのを全く知らずに書くのは良くないと思いながら) まず、Googlebotの仕様としてクッキーは保存しないし、クリックもしません。(そういう仕様です) |
nuxt-i18nモジュールのissueにも似た感じのissueが立ってますね… |
@Nekoya3 さん つまり、あるとき英語版を搭載したら、以降検索結果が英語版になった という感じですね。 コアなリダイレクト部分がいじれる人がいるなら、暫定的に これらの条件の時に、必ず日本語ページへリダイレクトする様に変更したら、 ということで、原因らしきものが分かっても |
x-defaultを日本語にした状態で実装試しますね |
本サイトの英語は数か月から存在しており、 #4991 で報告される前までは検索結果には特に問題無く日本語で表示されていたように思うのですが... 多言語化周りの目立った変更は #4991 で出ていたnuxt関連ライブラリの更新以外では意図的には行なっていないはずなので、
あたりが要因なのではないかなぁと個人的には推測しています。 |
#4898 でnuxt-i18nのアップデート入ってますが、DeployPreview的にはそれ以前のものでも/enの内容が表示されているため比較ができません... |
@MaySoMusician さん そのライブラリ?の更新あとという事であれば、それが原因かもしれないです。 a)htmlの言語の出し分け方法 今までnuxtが、ちゃんと機能していなかったのか、何かの修正タイミングでデフォルトが日本語から英語に変更されたのか、このあたりの仕様は私にはわかりません。 これから3の実験をしますが、根拠無しの想定ですが、デフォルトが英語に変わったとかだったら |
@harmo-snipe Cookie持ったままになってませんか? |
見ての通りprivate browsingです。 |
こちらは第二言語が選ばれています。 こちらの環境では
表示されました。(それぞれCookieとキャッシュを毎回全削除しています) |
@MaySoMusician さん。 GooglebotはAccept-Languageをリクエストしないので いずれにしても、リダイレクトで強制的に日本語にしない場合は、hreflangの実装が必要です。 |
1日経過しましたが 現在GooglebotのHTTPリクエストに対して英語版のページをリダイレクトしています。 Googleがどのようなリクエストをこのサーバーに行っているのか、 英語版にリダイレクトする処理が意図的なのか、バグなのか、 本改修を行わない限り、検索結果のタイトル/他は、当面英語で表示されることになります。 改修案1 改修案2 以上となります。 余談ですが私の環境では最初の東京都のマークが出て読み込み中みたいな表示の時はgooglebotに日本語ページを返しており、そのあとのページ表示レンダリング時に、enにリダイレクトします。 |
東京都に確認したところ、defaultは日本語にしてほしいとのことでした。
その方向で実装を試してもらってもいいでしょうか? |
ブラウザの言語設定(HTTPリクエストのAccept-Languages ではなく ブラウザのコンソールで このページをGoogleのモバイルフレンドリーテストにかけると下図のようになります https://search.google.com/test/mobile-friendly?id=vPANO0N28jbY5xajDHlF0Q これはGoogleが「言語設定を明示的に英語」にした状態でアクセスしてきたことを意味します。googlebotが全く同じ仕様でクロールしているのであれば、検索結果に英語で表示されているのは、現在のソースコードとしては期待通りの動作結果だといえます。仮にhreflangを記述してもgooglebotが日本語ページに到達できない場合は、googlebotのみ特別なリダイレクト措置を取らねばならないかもしれません。 |
ということはNuxtJS ちなみに、JMeterなどでクライアント側のJavaScriptを実行しない状態でリクエストを送ると
もしそうならかなり厄介ですね…。 |
誤解があるようなので補足しますが、hreflang使用の大前提にリダイレクトは不要です。 なので「何か」を見て変なリダイレクトを実装するとhreflangは機能しません。 #5001 (comment) |
@harmo-snipe さん https://github.com/tokyo-metropolitan-gov/covid19/blob/3744e68343b19cd66cf8025d6d63483be55bd24e/nuxt-i18n.config.ts#L28 hreflangは「やさしいにほんご」を外さないといけないので要カスタマイズですね。 |
@goki90210 さん 関係無い話かもですが、 Nuxtの識者から |
Googlebotが明示的に英語を指定してリクエストをしているという情報があるので、調べてみました。 内容は googlebotの種類は複数有り、これはほんの一つなのでもう少し監視を続けてみます。 |
@harmo-snipe 調査いただきありがとうございます。
と申し上げた部分です) 私が調査したところではgooglebotは 現在は、Cookieによる設定が無ければ、上記のようにユーザーの言語を判定して該当する言語のページにリダイレクト(HTTP 3xx系のリダイレクトではなく、単にそのページにroutingすることをnuxt-i18nでは"redirect"と呼んでいます)する設定になっていますので、結果的にgooglebotは英語のページに誘導されます。 いずれにせよ https://support.google.com/webmasters/answer/182192?hl=ja にあるとおり、Googleはユーザーの言語設定を参照して自動リダイレクトすることは避けよ( Avoid automatic redirection based on the user’s perceived language.)としているので、Cookieが無い場合の自動リダイレクトの設定を解除するのが良いと思われます。 (実装当初は、SNSでURLが共有されたときに、他の言語のユーザーが共有したリンクを踏んでも自分の言語で表示されるように、という目的で「Cookieが無い場合の自動リダイレクト」が設定されました) |
こちらに関して調査したので、まとめてみます。 TLDR
クロール結果の推移こちらにあるように、6/16 の時点では日本語でクロールされています。 また個人的にも Google で検索した際に日本語で表示していることを確認しているので、英語版ができてからしばらくたっても、日本語でクロールされていたと考えらます。 Googlebot の仕様が変わったことも考えにくいので、6/16 以降に行われた本リポジトリの何らかの変更によって英語でクロールされるようになったと考えられます。 このリポジトリ上の変更点これ以降の動作確認は、こちらの設定で行っています。
こちらの PR で Nuxt.js や nuxt-i18n をバージョンアップしています。
Netlify の Deploy Preview で確認すると、日本語ページを表示してから CSR で英語ページにコンテンツを差し替えています。 次に Nuxt.js や nuxt-i18n をバージョンアップした PR では、
#4933 の変更が Production にも取り込まれていて、Production でも これらの経緯を見ると、package のアップデートによってリダイレクトの挙動が変わった可能性があります。 nuxt-i18n の変更点#4898 から #4933 の差分として、nuxt-i18n が 6.12.2 -> 6.13.0 へ上がっています。
issue: nuxt-modules/i18n#737 この PR では、 それ以前は nuxt-i18n の リダイレクトでページを再取得しているので、SSG で生成された 今までは |
@shgtkshruch さん
なるほど、私が確認した以下の現象と完全に一致しました。
完全同意です。 結論は、nuxt-i18nのバージョン問題ということで原因はほぼ解明できたのかなと思いました。 言語選択を実装するのは非常に良いことだと思いますが、各所挙動の影響を考えずリダイレクトするのは 修正方法は提示しましたし、後はお任せします。 |
@shgtkshruch @harmo-snipe お二方、ありがとうございます。
サーバー側をPHPで制御しているわけではないので、
(https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages) とは異なるクローラーの挙動があることを考えると、どちらを見るかはある程度重要な問題になってきますね。 |
@MaySoMusician 最終的な対応としてはどうしましょうか?
でいきましょうか? |
正確にはHTTP 301ではなく、JavaScript上のlocation.assignで転送するんですよね? #5001 (comment) |
オフトピックですいません。
ja-basicについて
|
みなさんご検討いただきありがとうございます! @Nekoya3 @MaySoMusician そろそろ実装したいところですが、どのような方向性でいきますか? |
とりあえず私のほうで、nuxt-i18nによる自動リダイレクトの停止と、hreflangの設定までやりたいと思います。
|
OKです!よろしくお願いします 🙏 |
@kaizumaki さん インターナショナルターゲティングという項目です。 hreflangはとても面倒なタグで ①日本語の実装ページにも日本語の実装されたlinkを指示する必要があります。 基本どれかが欠けたり、抜けたら「リターンがありません」になります。 ※国のタブは恐らく日本語ドメインなのでjaに固定されていると思われます。 |
情報ありがとうございます!東京都の担当の方に伝えておきます。 |
・リダイレクトの停止 @MaySoMusician さんお疲れ様でした。 |
改善詳細 / Details of Improvement
スクリーンショット / Screenshot
期待する見せ方・挙動 / Expected behavior
動作環境・ブラウザ / Environment
The text was updated successfully, but these errors were encountered: