どのように へ Implement Hreflang (手順 by 手順)
暫定日本語訳:機能 code 向けに all three hreflang 方法 — HTML head tags, HTTP Link headers, と XML sitemap annotations — plus syntax rules, at-scale CMS automation, と validation workflow へ confirm it actually shipped correctly.
言語
このページには証拠シグナルが1件あります
- 関連するライブツールreturntag - hreflang checker
暫定日本語訳:There are exactly three ways へ 追加 hreflang — HTML link tags in head, HTTP Link レスポンス headers (向けに non-HTML files like PDFs), または xhtml:link entries in XML sitemap (best at scale). Pick one; Google treats all three as equivalent と there's no benefit へ combining them. すべての 方法 obeys 同じ two non-negotiable rules: self-reference (各 ページ lists itself) と reciprocity (if points へ B, B 必要がある point back へ, または Google ignores pair). Codes are ISO 639-1 言語 plus optional ISO 3166-1 alpha-2 地域; x-デフォルト is fallback. Generate it all から single ソース of truth, then validate rendered head, ない just view-ソース — in my study of 374 756 domains, 超えて 67% of hreflang setups had at least one 問題.
暫定日本語案: TL;DR — There are three ways へ 追加 hreflang: small
<link>tags in あなた 暫定日本語案: ページ’s<head>,Link:header あなた サーバー 送信, または entries in あなた XML 暫定日本語案: sitemap. あなた だけ pick one. Whichever あなた pick, two rules 決して change: 暫定日本語案: すべての ページ lists itself, と すべての ページ あなた link へ has へ link back — または 暫定日本語案: Google ignores whole 設定. Then あなた 確認 その tags actually 表示 up in 暫定日本語案: ページ way あなた meant them へ.
Start here: あなた’ve already decided あなた need hreflang
暫定日本語案: この is どのように-へ. If あなた’re still ない sure whether あなた need hreflang または 何 暫定日本語案: it does, read hreflang overview 最初 — この ページ assumes あなた know あなた have 暫定日本語案: multiple 言語 または 国 versions of ページ と あなた just want へ 構築 暫定日本語案: thing correctly.
three ways へ 追加 it (pick one)
- 暫定日本語案: HTML
<link>tags in<head>. あなた 追加 few lines へ top of 各 暫定日本語案: ページ’s HTML. Easiest へ understand, easiest へ see, good 向けに smaller サイト. - 暫定日本語案: HTTP
Link:headers. 同じ information, sent by あなた サーバー in 暫定日本語案: レスポンス instead of in HTML. この is だけ option 向けに files その aren’t 暫定日本語案: HTML — like PDF, which has no<head>へ put tags in. - 暫定日本語案: XML sitemap. あなた list all 言語 versions inside あなた sitemap file 暫定日本語案: instead of on 各 ページ. Best 向けに big サイト, because あなた don’t have へ touch 暫定日本語案: すべての ページ — whole map lives in one place.
暫定日本語案: Google treats all three 同じ. There’s no “faster” または “stronger” one, と there 暫定日本語案: is no benefit へ using more than one at time — その just gives あなた more 暫定日本語案: places 向けに things へ fall out of sync.
Evidence for this claim Google supports equivalent HTML, HTTP-header, and sitemap methods for declaring localized versions; HTTP headers can be used for non-HTML files such as PDFs. Scope: Google Search hreflang implementation methods. Confidence: high · Verified: Google: Localized versions何 HTML version looks like
暫定日本語案: Say あなた have US English ページ, UK English ページ, German ページ, と global 暫定日本語案: homepage その lets 人々 choose. On US English ページ あなた’d put:
<link rel="alternate" hreflang="en-us" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />暫定日本語案: Read 各 line as: “there’s an alternate version of this page, it’s for this
language/region, and it lives at this address.” x-default line is あなた
暫定日本語案: fallback 向けに anyone whose 言語 doesn’t match others.
暫定日本語案: Two things へ notice, because それら’re two rules その 作る hreflang 機能:
- 暫定日本語案: US ページ lists itself (その 最初
en-usline points at US ページ 暫定日本語案: あなた’re already on). - 暫定日本語案: すべての other ページ in 設定 has へ carry 同じ block pointing back. UK 暫定日本語案: ページ, German ページ, と homepage all need their own version of これらの four 暫定日本語案: lines.
two rules, in plain terms
- 暫定日本語案: すべての ページ points back. If あなた US ページ links へ あなた German ページ, German 暫定日本語案: ページ has へ link へ US ページ. Miss その return link と Google throws pair 暫定日本語案: out. この is rule 人々 break 大半の.
- 暫定日本語案: すべての ページ points へ itself. 各 version lists its own URL in 設定. 暫定日本語案: Google calls この optional ただし good practice — do it anyway, it 保持 everything 暫定日本語案: consistent.
使用 real, 完全な web addresses
暫定日本語案: 常に 使用 full address, starting とともに https://. ない /us/, ない
暫定日本語案: //example.com/us/ — whole thing, https://example.com/us/. と it has へ
暫定日本語案: match exact address Google actually indexes: 同じ protocol, 同じ www (または
暫定日本語案: ない), 同じ trailing slash, 同じ capitalization.
Get codes right
暫定日本語案: code is two-letter 言語, optionally followed by dash と two-letter
暫定日本語案: 国: en, en-us, de, es-mx. classic mistakes are en-uk (it’s
暫定日本語案: en-gb — uk actually means Ukrainian) と jp 向けに Japanese (it’s ja).
Then 確認 その it 機能
暫定日本語案: 大半の 重要 thing beginners miss: 後に あなた ship, actually look at
暫定日本語案: rendered ページ へ confirm tags are there と in <head>. If あなた tags are
暫定日本語案: 追加 by JavaScript, それら might ない 表示 up いつ あなた “View Page Source” ただし する
暫定日本語案: 表示 up in live ページ. Google 検索 Console’s URL Inspection できる 表示 あなた 何
暫定日本語案: Google actually rendered.
暫定日本語案: Want full code 向けに header と sitemap 方法, どのように へ automate この 全体で 暫定日本語案: whole CMS, exact validation 手順, と mistakes その quietly break 暫定日本語案: clusters? Switch へ Advanced tab.
暫定日本語案: TL;DR — Three 方法, pick one: HTML
<link>tags in<head>, HTTP 暫定日本語案:Link:headers ( だけ option 向けに non-HTML files like PDFs), または<xhtml:link>暫定日本語案: entries in XML sitemap (best at scale — one machine-generated file, easiest へ 暫定日本語案: QA). Google says three are equivalent と there’s no benefit へ combining 暫定日本語案: them. すべての 方法 obeys self-reference + reciprocity, 使用 absolute URLs, と 暫定日本語案: 使用 ISO 639-1 言語 + optional ISO 3166-1 alpha-2 地域 codes. Generate 暫定日本語案: whole thing から one ソース of truth — hand-maintained hreflang rots. Then 暫定日本語案: validate rendered head, クロール whole cluster 向けに reciprocity, と 保つ 暫定日本語案: re-確認 後に すべての URL change. Do ない auto-リダイレクト crawlers by geo.
前に あなた write line of code: three decisions
暫定日本語案: 1. Which 方法. Google is explicit その choice is について convenience, ない 暫定日本語案: パフォーマンス — “The three methods are equivalent from Google’s perspective and you can choose the method that’s the most convenient for your site.” My rough rule:
Evidence for this claim Google supports equivalent HTML, HTTP-header, and sitemap methods for declaring localized versions; HTTP headers can be used for non-HTML files such as PDFs. Scope: Google Search hreflang implementation methods. Confidence: high · Verified: Google: Localized versions- 暫定日本語案: handful of URLs, static または simple サイト, few locales → HTML
<link>tags. - 暫定日本語案: Non-HTML assets (PDFs, docs) → HTTP
Link:headers (あなた have no other 暫定日本語案: option — there’s no<head>in PDF). - 暫定日本語案: Many locales, existing sitemap pipeline, または headless/JAMstack setup → 暫定日本語案: XML sitemap, generated programmatically.
暫定日本語案: Decision Trees lens walks この as actual flowchart.
暫定日本語案: 2. One ソース of truth. Whatever 方法 あなた pick, annotations すべき be 暫定日本語案: generated から one place — locale/translation table in あなた database, CMS 暫定日本語案: relationship field, または (向けに small サイト) single spreadsheet. single worst 暫定日本語案: hreflang anti-pattern is hand-maintaining tags per ページ. moment one locale’s 暫定日本語案: template drifts, return links go 不足している と pairs get dropped.
暫定日本語案: 3. Do ない combine 方法. あなた できる run all three; Google says there’s no 暫定日本語案: benefit, と すべての extra 方法 is another surface 向けに three copies へ disagree 暫定日本語案: とともに 各 other.
Evidence for this claim Google requires fully qualified alternate URLs and reciprocal links, and recommends including each page itself in its alternate set. Scope: Google Search hreflang rules shared by all delivery methods. Confidence: high · Verified: Google: Hreflang guidelines方法 1 — HTML <link> tags in <head>
暫定日本語案: syntax, verbatim から Google, is:
<link rel="alternate" hreflang="lang_code" href="url_of_page" />暫定日本語案: full 機能 設定 向けに multi-言語, multi-地域 cluster とともに fallback:
<link rel="alternate" hreflang="en-us" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />暫定日本語案: その exact block goes on すべての ページ in cluster ( US ページ, UK ページ, 暫定日本語案: German ページ, と homepage) — 各 one 含む its own self-referencing 暫定日本語案: line. その’s 何 satisfies reciprocity.
暫定日本語案: Placement is hard rule. Google: “The <link> tags must be inside a
well-formed <head> section of the HTML.” と their own troubleshooting advice:
暫定日本語案: “If in doubt, paste code from your rendered page into an HTML validator to ensure
that the links are inside the <head> element.”
暫定日本語案: この matters more than it sounds, because of failure mode 大半の written guides
暫定日本語案: skip: hreflang tags できる be forced out of <head> と へ <body>,
暫定日本語案: どこ それら’re 無効. In my Pubcon Vegas 2019 deck
暫定日本語案: I flagged この directly — tags できる’t legitimately live in body (その する let
暫定日本語案: one サイト hijack another’s alternates), ただし malformed または injected <p> tag, または
暫定日本語案: iframe, できる prematurely close <head> so その everything 後に it — including
暫定日本語案: あなた hreflang — renders inside <body>. tag is technically present in
暫定日本語案: ソース ただし silently 無効. fastest way へ debug it is ブラウザー DOM
暫定日本語案: breakpoints: watch どこ tags actually land in rendered DOM, then walk
暫定日本語案: back へ markup その broke <head>.
暫定日本語案: いつ HTML tags 作る sense: small-へ-medium サイト とともに manageable number of
暫定日本語案: locales, どこ per-ページ <link> block doesn’t balloon. On サイト とともに dozens
暫定日本語案: of locales, すべての ページ carries large block of markup — which is one 理由 big
暫定日本語案: サイト lean on sitemap 方法.
暫定日本語案: Don’t mix hreflang とともに other alternate attributes on 同じ
暫定日本語案: <link> element. Google’s guidance is explicit その <link rel="alternate">
暫定日本語案: carrying hreflang shouldn’t また carry unrelated alternate attribute like
暫定日本語案: media in 同じ tag — if あなた need both 言語/地域 alternate と
暫定日本語案: media-クエリ alternate 向けに 同じ URL, その’s two separate <link> elements,
暫定日本語案: ない one combined one. Mixing them is easy way へ end up とともに tag Google
暫定日本語案: できる’t parse as either.
方法 2 — HTTP Link: headers
暫定日本語案: 同じ information, sent in HTTP レスポンス instead of HTML. syntax:
Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
<https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch"暫定日本語案: Note angle brackets around 各 URL, semicolon-separated attributes, と 暫定日本語案: comma separating 各 alternate. すべての URL in header is comma-appended.
暫定日本語案: いつ あなた need この: non-HTML resources. PDF, .doc, 画像 served
暫定日本語案: directly — none of them have <head> へ hold <link> tags, so header is
暫定日本語案: あなた だけ way へ attach hreflang へ them.
暫定日本語案: Configuration considerations: あなた 設定 これらの headers at サーバー または CDN layer
暫定日本語案: ( Apache Header directive, Nginx add_header, Cloudflare/Fastly/CloudFront
暫定日本語案: レスポンス-header rule, または あなた application’s レスポンス). Because header is 設定 by
暫定日本語案: infrastructure rather than per-document markup, reciprocity rule is easy へ
暫定日本語案: break here — English PDF’s header と German PDF’s header are usually
暫定日本語案: 設定 separately, so it’s on あなた へ 作る sure 各 one lists whole 設定,
暫定日本語案: itself 含む. 保つ header generation driven by 同じ locale table as あなた
暫定日本語案: HTML/sitemap approach.
暫定日本語案: ** invariant へ hold onto: すべての alternate レスポンス carries identical 暫定日本語案: 完全な 設定, すべての time.** It’s ない enough 向けに English PDF’s header へ list 暫定日本語案: German alternate — German PDF’s レスポンス has へ carry exact 同じ 暫定日本語案: 設定 back (itself plus すべての other alternate), on すべての single レスポンス, ない just 暫定日本語案: 最初 one crawler happens へ hit. Treat header as generated output, ない 暫定日本語案: one-off あなた 設定 と forget.
方法 3 — XML sitemap <xhtml:link> annotations
暫定日本語案: At scale, この is usually right call: whole cluster lives in one (または few)
暫定日本語案: machine-generated files, nothing bloats 各 ページ’s <head>, と — because
暫定日本語案: entire relationship graph is in one place — it’s by far easiest 方法 へ QA.
暫定日本語案: syntax:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.example.com/english/page.html</loc>
<xhtml:link rel="alternate" hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
<url>
<loc>https://www.example.de/deutsch/page.html</loc>
<xhtml:link rel="alternate" hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
</urlset>暫定日本語案: Two things その trip 人々 up in sitemap 方法:
- 暫定日本語案: ** namespace declaration is mandatory.** その
暫定日本語案:
xmlns:xhtml="http://www.w3.org/1999/xhtml"on<urlset>element is ない 暫定日本語案: optional decoration — omit it と すべての<xhtml:link>in file is 無効. - 暫定日本語案: すべての
<url>block 必要がある be self-完全な. Notice その both<url>blocks 暫定日本語案: above list both alternates, including their own<loc>. 各<url>entry 暫定日本語案: carries full 設定 (self-reference + all alternates). Reciprocity in sitemap 暫定日本語案: is just “every URL’s block lists every URL in the cluster, itself included.”
暫定日本語案: Two behaviors worth knowing so あなた don’t 超えて-engineer generator: order
暫定日本語案: of <xhtml:link> children inside <url> block doesn’t matter へ Google —
暫定日本語案: don’t waste time sorting them — と それらの <xhtml:link> annotations don’t count
暫定日本語案: against あなた sitemap’s 50 000-URL-per-file limit, since それら’re children of
暫定日本語案: <url> entry, ない separate <url> entries themselves.
暫定日本語案: Generating it programmatically. whole point of sitemap 方法 is その
暫定日本語案: it’s byproduct of あなた CMS’s own translation データ. If あなた CMS already knows
暫定日本語案: その /english/page.html と /deutsch/page.html are translations of 各 other,
暫定日本語案: あなた sitemap generator すべき walk その relationship table と emit
暫定日本語案: <xhtml:link> blocks at 構築 time (または at sitemap-リクエスト time). Do その と
暫定日本語案: hreflang できる’t drift out of sync とともに reality — it’s regenerated から ソース of
暫定日本語案: truth すべての time, と adding locale is データ change, ない hand-edit 全体で
暫定日本語案: hundreds of ページ.
暫定日本語案: 向けに teams なしで dev resources, I built lightweight 暫定日本語案: Google Sheets template in my Ahrefs 暫定日本語案: hreflang guide: Setup tab (pick デフォルト 言語 plus up へ four variants), 暫定日本語案: URLs tab (paste 各 言語’s URLs へ columns), と Results tab その 暫定日本語案: auto-generates sitemap XML block 向けに あなた. It’s “single source of truth” idea 暫定日本語案: made concrete 向けに サイト too small へ justify real CMS integration.
rules その apply no matter which 方法 あなた pick
暫定日本語案: これらの are 方法-agnostic と non-negotiable.
- 暫定日本語案: Self-reference. すべての ページ (または すべての
<url>block, または すべての header) lists 暫定日本語案: itself. Mueller frames この as optional-ただし-good-practice, ただし skipping it was 暫定日本語案: present in 18,0% of domains in my study — automate it と it costs nothing. - 暫定日本語案: Reciprocity. “Each language version must list itself as well as all other language versions.” と enforcement: “If two pages don’t both point to each other, the tags will be ignored. This is so that someone on another site can’t arbitrarily create a tag naming itself as an alternative version of one of your pages.” One 不足している return link drops pair.
- 暫定日本語案: Absolute, fully-qualified URLs. “Alternate URLs must be fully-qualified,
including the transport method (http/https)” — so
https://example.com/foo, 暫定日本語案: 決して//example.com/fooまたは/foo. と URL 必要がある match exact form 暫定日本語案: Google indexes: protocol,www, trailing slash, と ケース all have へ line up, または 暫定日本語案: return-link match fails.
Getting codes right
暫定日本語案: “The first code of the hreflang attribute is the language code (in ISO 639-1
format) followed by an optional second code that represents the region code (in ISO
3166-1 Alpha 2 format).” Combine them とともに dash: en-US. あなた できる target
暫定日本語案: 言語 on its own (es = Spanish everywhere), ただし あなた cannot target 地域
暫定日本語案: on its own — there’s 常に 言語 最初.
暫定日本語案: mistakes I see 大半の 多くの場合 (と saw 全体で study dataset):
- 暫定日本語案:
en-UKinstead ofen-GB—ukis Ukrainian, UK’s 地域 code isgb. - 暫定日本語案:
jpinstead ofja向けに Japanese,cninstead ofzh向けに Chinese. - 暫定日本語案: Three-letter codes (
ger,eng) どこ two-letter ISO 639-1 is 必要. - 暫定日本語案: Using
EU,UN, またはUKas 地域 codes — none are 有効 ISO 3166-1 alpha-2 暫定日本語案: targets.
暫定日本語案: x-default is reserved value 向けに fallback — 言語 selector または
暫定日本語案: auto-redirecting home ページ その serves ユーザー who match none of あなた explicit
暫定日本語案: locales:
<link rel="alternate" href="https://example.com/" hreflang="x-default" />暫定日本語案: It’s ない mandatory. It was single 大半の-不足している element in my study (56,3% of
暫定日本語案: domains omitted it), ただし 不足している x-default doesn’t break cluster way
暫定日本語案: 不足している reciprocal tag does — Google just falls back へ its own 言語/地域
暫定日本語案: detection 向けに unmatched ユーザー. 追加 it anyway; it’s 確認 item, ない
暫定日本語案: cluster-breaker. (There’s dedicated x-デフォルト subtopic in この cluster.)
Implementing at scale — CMS と プラットフォーム approaches
暫定日本語案: WordPress. Yoast SEO does ない generate hreflang on its own. へ actually
暫定日本語案: output tags あなた need multilingual plugin — WPML または Polylang. WPML
暫定日本語案: auto-generates hreflang 向けに すべての ページ その has translations, adds x-default
暫定日本語案: pointing at あなた デフォルト-言語 version, と by デフォルト injects annotations
暫定日本語案: へ XML sitemap; there’s 設定 下で WPML → 言語 → SEO Options
暫定日本語案: (“Display alternative languages in the HEAD section”) if あなた want head-tag output
暫定日本語案: instead of, または in addition へ, sitemap. (See WPML’s docs on using it とともに
暫定日本語案: Yoast.)
暫定日本語案: Shopify. Shopify Markets 自動 generates mutually-linked hreflang
暫定日本語案: tags once あなた’ve 設定 markets/言語 と コンテンツ is published と
暫定日本語案: linked in navigation — which removes 大半の 一般的な failure mode (不足している
暫定日本語案: reciprocal links) by design. catch: Markets’ 自動 tags are 多くの場合
暫定日本語案: 言語-だけ (fr, de) rather than 言語-地域 (fr-FR, fr-CA), which
暫定日本語案: 下で-serves brands その need regional specificity — French 向けに France vs. Canada
暫定日本語案: vs. Belgium. 向けに その あなた drop へ 手動 <link> tags in theme.liquid (Shopify’s
暫定日本語案: own theme hreflang docs
暫定日本語案: 表示 pattern) または app — と be careful, because mixing 自動 Markets
暫定日本語案: tags とともに 手動/app tags is documented ソース of conflicts. Pick one.
暫定日本語案: カスタム / headless / enterprise. Generate annotations から あなた 暫定日本語案: translation-relationship table at 構築 または serve time, as described in sitemap 暫定日本語案: section above. この is 同じ “single source of truth” principle — hreflang 暫定日本語案: becomes computed output of データ あなた CMS already holds, ない hand-maintained 暫定日本語案: artifact その できる rot.
Implementation mistakes その break cluster
暫定日本語案: Auto-redirecting by geo/IP. この is separate failure から syntax errors と 暫定日本語案: it’s worse. If あなた リダイレクト 訪問者 — と especially crawlers — へ version based 暫定日本語案: on perceived ロケーション, あなた できる de-インデックス登録 entire regional clusters, because Googlebot 暫定日本語案: mostly crawls から US. As I put it in その Pubcon deck: geo-リダイレクト “would redirect search engines to where they crawl from. Google for instance mostly crawls from the US so we would effectively de-index all geo pages.” There’s regulatory 暫定日本語案: angle too — potential exposure 下で EU anti-geoblocking rules. right pattern is 暫定日本語案: リダイレクト ユーザー, 決して crawlers: detect と (optionally) リダイレクト human 訪問者, 暫定日本語案: ただし 常に let bots reach すべての URL variant directly, とともに hreflang doing actual 暫定日本語案: routing signal. Google’s own multi-regional guidance 暫定日本語案: recommends non-intrusive suggestion banner 超えて 自動 redirection 向けに exactly 暫定日本語案: この 理由.
暫定日本語案: Pointing hreflang at non-canonical, リダイレクト, または noindexed URLs. If locale’s
暫定日本語案: URL changes と リダイレクト goes in ただし hreflang still points at 古い URL,
暫定日本語案: あなた cluster 現在 references 301 または 404 (16,9% of domains in my study
暫定日本語案: referenced broken/リダイレクト ページ). Similarly, 各 variant すべき canonicalize へ
暫定日本語案: itself; pointing hreflang at URL その’s canonicalized away, または at noindexed
暫定日本語案: ページ, breaks return link (8,0% pointed at non-canonical URLs).
暫定日本語案: Inconsistent URL formats. hreflang URL と インデックス登録 URL have へ be
暫定日本語案: byte-identical in form — trailing slash, www, protocol, と ケース all 含む.
暫定日本語案: mismatch here is silent reciprocity failure.
Validating あなた implementation 後に launch
暫定日本語案: View rendered ソース, ない just raw ソース. If あなた hreflang is injected by
暫定日本語案: クライアント-side JavaScript, curl または Ctrl+U (“View Page Source”) する 表示 nothing —
暫定日本語案: ただし tags exist in rendered DOM. Confirm とともに GSC URL Inspection → “Test Live
URL” → “View Tested Page,” または rendering-capable crawler. この is single 大半の
暫定日本語案: 一般的な 理由 someone says “my tags are missing” いつ それら’re actually fine (または
暫定日本語案: reverse — present in ソース ただし broken because それら render in <body>).
暫定日本語案: クロール whole cluster, don’t spot-確認 one URL. Reciprocity is 暫定日本語案: relationship 間に ページ, so 確認 one ページ tells あなた almost nothing. Run 暫定日本語案: crawler 全体で whole cluster — Screaming Frog’s 暫定日本語案: hreflang audit 暫定日本語案: または Ahrefs サイト Audit — へ catch 不足している return tags, non-canonical targets, と 暫定日本語案: broken references at scale. Ahrefs サイト Audit’s Hreflangs tab draws cluster as 暫定日本語案: graph とともに broken links in red, which is far easier へ 理由 について than CSV.
暫定日本語案: Verify real SERPs とともに &hl= と &gl=. Append host-言語 (&hl=) と
暫定日本語案: geolocation (&gl=) パラメーター へ Google 検索 URL へ preview 何 given
暫定日本語案: locale’s results actually look like, rather than guessing から あなた own ロケーション.
暫定日本語案: Validation is ない one-time 手順. 新しい locales, URL/リダイレクト changes, と 暫定日本語案: dev/staging config bleeding へ production are recurring causes of post-launch 暫定日本語案: breakage. 構築 hreflang checks へ regression tests と recurring crawls, ない just 暫定日本語案: launch-day QA pass. My framing から talks: “any number of things can break from masking to things carrying over from dev/test/staging environments.”
Myths worth retiring
- 暫定日本語案: “Sitemaps process faster than HTML tags.” False. Both are resolved at クロール 暫定日本語案: time — I’ve debunked この directly. sitemap’s advantage is maintainability と 暫定日本語案: QA, ない speed.
- 暫定日本語案: “Yandex doesn’t support hreflang in sitemaps.” False — Yandex’s own 暫定日本語案: ドキュメント confirms sitemap hreflang support.
- 暫定日本語案: “Use all three methods for extra signal.” No benefit per Google, と it just 暫定日本語案: multiplies inconsistency risk.
- 暫定日本語案: “A missing
x-defaultbreaks the cluster.” False — it’s optional; Google 暫定日本語案: falls back へ its own detection. - 暫定日本語案: “Wrong hreflang gets you penalized.” False — it’s hint, ない directive. 暫定日本語案: Broken hreflang is ignored, ない penalized.
どこ へ go next
暫定日本語案: この 記事 is どのように-へ depth 下で hreflang hub — hub covers 何 暫定日本語案: hreflang is, なぜ reciprocity matters, と 何 Bing does instead. x-デフォルト 暫定日本語案: subtopic goes deep on fallback value. 向けに strategy この implements, see 暫定日本語案: International SEO pillar — hreflang is technical layer, ない 暫定日本語案: substitute 向けに genuine localization.
AI要約
暫定日本語案: condensed take on Advanced version:
- 暫定日本語案: Three 方法, pick exactly one (Google treats them as equivalent; no benefit
暫定日本語案: へ combining):
- 暫定日本語案: HTML
<link>tags in<head>— small/medium サイト; 必要がある be in 暫定日本語案: well-formed<head>, 決して<body>; don’t mixhreflangとともに another 暫定日本語案: alternate attribute likemediaon 同じ<link>element. - 暫定日本語案: HTTP
Link:headers — だけ option 向けに non-HTML files (PDFs); 設定 at 暫定日本語案: サーバー/CDN; すべての alternate レスポンス 必要がある carry identical 完全な 設定, 暫定日本語案: すべての time. - 暫定日本語案: XML sitemap
<xhtml:link>— best at scale; needs 暫定日本語案:xmlns:xhtml="http://www.w3.org/1999/xhtml"namespace on<urlset>; easiest へ 暫定日本語案: QA because whole graph is in one file; child order doesn’t matter と これらの 暫定日本語案: children don’t count toward 50 000-URL sitemap limit.
- 暫定日本語案: HTML
- 暫定日本語案: Two universal rules: self-reference (各 ページ lists itself) と reciprocity 暫定日本語案: (→B 必要とする B→, または pair is ignored). 使用 absolute, fully-qualified URLs 暫定日本語案: その match exact インデックス登録 form.
- 暫定日本語案: Codes: ISO 639-1 言語 + optional ISO 3166-1 alpha-2 地域 (
en-GB, ない 暫定日本語案:en-UK;ja, ないjp).x-defaultis reserved fallback — optional ただし 暫定日本語案: 大半の-missed element (56,3% in my study). - 暫定日本語案: Automate から one ソース of truth. WordPress needs WPML/Polylang (Yoast alone 暫定日本語案: does nothing); Shopify Markets auto-generates reciprocal tags ただし 多くの場合 暫定日本語案: 言語-だけ; カスタム/headless すべき emit hreflang から translation table.
- 暫定日本語案: Don’t auto-リダイレクト crawlers by geo — Googlebot crawls mostly から US, so 暫定日本語案: it できる de-インデックス登録 regional clusters; リダイレクト ユーザー, 決して bots.
- 暫定日本語案: Validate rendered head, ない just view-ソース (JS-injected tags won’t 表示
暫定日本語案: in ソース); クロール whole cluster 向けに reciprocity; 確認 locales とともに
&hl=/ 暫定日本語案:&gl=; re-確認 後に すべての URL change.
公式ドキュメント
暫定日本語案: 主要-ソース ドキュメント 向けに implementing hreflang.
暫定日本語案: Google
- 暫定日本語案: Localized versions of あなた ページ — 主要 implementation doc: all three 方法 とともに exact syntax, reciprocity requirement, 有効 codes, absolute-URL rule, と
x-default. - 暫定日本語案: Managing multi-regional と multilingual サイト — URL-structure options と auto-リダイレクト / cloaking warning (なぜ あなた 必要がある ない geo-リダイレクト crawlers).
- 暫定日本語案: Tell Google について localized versions (x-デフォルト blog, 2013) — original introduction of
x-default. - 暫定日本語案: International Targeting レポート deprecation (Sept 2022) — 古い レポート is gone; hreflang tags still 機能.
暫定日本語案: Bing / Microsoft
- 暫定日本語案: Bing Webmaster Guidelines — Bing’s guidance; note Bing leans on
content-languageと<html lang>超えて hreflang. - 暫定日本語案: Bingbot Series: Maximizing クロール Efficiency — context on どのように Bing handles international/multilingual サイト.
暫定日本語案: CMS / プラットフォーム
- 暫定日本語案: WPML — Using WordPress SEO (Yoast) とともに WPML — どのように WPML outputs hreflang (head vs. sitemap 設定).
- 暫定日本語案: Shopify — 追加 hreflang tags in あなた theme — 手動
theme.liquid<link>pattern.
出典からの引用
暫定日本語案: On—record statements relevant へ implementation. 各 Google-docs link is deep 暫定日本語案: link その jumps へ quoted passage on live ページ.
暫定日本語案: Google — three 方法
- 暫定日本語案: “The three methods are equivalent from Google’s perspective and you can choose the method that’s the most convenient for your site.” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
暫定日本語案: Google — placement
- 暫定日本語案: “The
<link>tags must be inside a well-formed<head>section of the HTML.” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
暫定日本語案: Google — two rules
- 暫定日本語案: “Each language version must list itself as well as all other language versions.” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
- 暫定日本語案: “If two pages don’t both point to each other, the tags will be ignored.” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
- 暫定日本語案: “Alternate URLs must be fully-qualified, including the transport method (http/https).” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
暫定日本語案: Google — codes
- 暫定日本語案: “The first code of the hreflang attribute is the language code (in ISO 639-1 format) followed by an optional second code that represents the region code (in ISO 3166-1 Alpha 2 format).” 暫定日本語案: — Google 検索 Central docs. 暫定日本語案: Jump へ quote
暫定日本語案: John Mueller, Google — it’s hint, ない directive
- 暫定日本語案: On self-referential tags: hreflang self-references are reported as optional ただし good practice. — John Mueller, Google, relayed via my Ahrefs hreflang guide.
- 暫定日本語案: On correctness ない guaranteeing outcome (可能性がある 2025, Bluesky): Mueller noted その hreflang doesn’t guarantee インデックス登録, so variant 可能性がある simply ない be インデックス登録, と その 同じ-言語 variants (like
fr-frとfr-be) are commonly consolidated. — relayed via 検索エンジン Journal coverage.
暫定日本語案: Note: two Google-docs quote sets deep-link へ live ドキュメント と were re-verified verbatim against it. Mueller Bluesky と self-reference remarks are relayed via 二次 coverage (SEJ, Ahrefs) rather than re-verified against original posts, so それら’re paraphrased here rather than quoted.
Which implementation 方法 すべき I 使用
暫定日本語案: 機能 top へ bottom と stop at 最初 match.
暫定日本語案: 1. Are ページ non-HTML files (PDFs, docs, 画像 served directly)?
暫定日本語案: → Yes → HTTP Link: headers. それら have no <head>, so この is あなた だけ
暫定日本語案: option. 設定 header at サーバー/CDN, listing whole 設定 on 各 file.
暫定日本語案: → No → continue.
暫定日本語案: 2. Do あなた have more than handful of locales, existing sitemap pipeline, または
暫定日本語案: headless/JAMstack 構築?
暫定日本語案: → Yes → XML sitemap <xhtml:link>. Generate it programmatically から あなた
暫定日本語案: translation table. One machine-generated file, no per-ページ markup, easiest へ QA.
暫定日本語案: → No → continue.
暫定日本語案: 3. Small/simple サイト, few locales, と あなた’d rather 保つ everything visible on
暫定日本語案: ページ?
暫定日本語案: → HTML <link> tags in <head>. Just 作る sure block is generated から
暫定日本語案: one ソース of truth と lands inside well-formed <head>.
暫定日本語案: Whatever あなた pick: 使用 it alone. Google says there’s no benefit へ combining 暫定日本語案: 方法, と すべての extra copy is place 向けに three へ disagree.
Do I need x-default
暫定日本語案: Do あなた have ページ その serves ユーザー who match none of あなた explicit locales —
暫定日本語案: 国/言語 selector, または global homepage?
暫定日本語案: → Yes → 追加 x-default pointing at その fallback ページ.
暫定日本語案: → No → あなた できる skip it. It’s optional; Google falls back へ its own detection. It
暫定日本語案: won’t break cluster (unlike 不足している reciprocal tag). Adding it is still good
暫定日本語案: practice — it was single 大半の-missed element in my study (56,3%).
すべき I auto-リダイレクト ユーザー by ロケーション
暫定日本語案: Are あなた thinking について redirecting based on IP/geo? 暫定日本語案: → リダイレクト human 訪問者 だけ, と prefer non-intrusive banner 超えて hard 暫定日本語案: リダイレクト. 暫定日本語案: → 決して リダイレクト crawlers by geo. Googlebot mostly crawls から US, so 暫定日本語案: crawler geo-リダイレクト できる de-インデックス登録 あなた other regional versions — と it risks 暫定日本語案: cloaking classification と EU anti-geoblocking exposure. Let bots reach すべての URL 暫定日本語案: variant directly; hreflang does routing signal.
Which CMS path applies へ me
- 暫定日本語案: WordPress? → Yoast alone does nothing. Install WPML または Polylang; それら 暫定日本語案: emit hreflang (choose head vs. sitemap output in WPML’s SEO 設定).
- 暫定日本語案: Shopify? → Markets auto-generates reciprocal tags — ただし 多くの場合 言語-だけ.
暫定日本語案: Need
fr-FRvsfr-CA? 追加 手動theme.liquidtags または app, と don’t mix 暫定日本語案: two (conflict risk). - 暫定日本語案: カスタム / headless? → Emit
<xhtml:link>(または head tags) から あなた 暫定日本語案: translation-relationship table at 構築/serve time.
SOP: Ship hreflang cluster から scratch
暫定日本語案: repeatable procedure 向けに adding 新しい hreflang cluster (または 新しい locale へ 暫定日本語案: existing one). Run it top へ bottom.
暫定日本語案: 1. 構築 locale matrix (single ソース of truth).
暫定日本語案: List すべての URL と its 言語-地域 code in one place — database table, CMS
暫定日本語案: translation field, または spreadsheet. Confirm すべての URL is canonical, インデックス登録
暫定日本語案: form (right protocol, www, trailing slash, ケース). この table is input へ
暫定日本語案: everything below; nothing gets hand-typed downstream.
暫定日本語案: 2. Pick one 方法 using Decision Trees lens. Do ない combine 方法.
暫定日本語案: 3. Generate annotations から matrix.
- 暫定日本語案: HTML: emit
<link>block へ 各 ページ’s<head>から matrix. - 暫定日本語案: Sitemap: emit 各
<url>block とともにxmlns:xhtmlnamespace on<urlset>. - 暫定日本語案: Headers: emit
Link:header から matrix at サーバー/CDN.
暫定日本語案: 4. Verify two rules programmatically 前に publishing. 暫定日本語案: すべての entry 必要がある () 含む self-reference と (b) list すべての other entry in 暫定日本語案: cluster. Confirm reciprocity: 向けに 各 →B, there’s matching B→.
暫定日本語案: 5. 追加 x-default if あなた have selector または global fallback ページ.
暫定日本語案: 6. Publish, then validate rendered output (see Playbooks lens 向けに
暫定日本語案: detailed validation runbook): rendered head (ない view-ソース), full-cluster クロール
暫定日本語案: 向けに reciprocity, と &hl=/&gl= SERP spot-確認.
暫定日本語案: 7. Wire it へ ongoing checks. 暫定日本語案: 追加 recurring クロール / regression テスト so future URL change または 新しい locale できる’t 暫定日本語案: silently rot return tag. Validation is ない one-time task.
暫定日本語案: いつ adding locale later: あなた だけ edit matrix (手順 1) と re-run 手順 暫定日本語案: 3–6. If あなた’re hand-editing individual ページ へ 追加 locale, あなた ソース of truth 暫定日本語案: is 誤った — fix その 最初.
Playbook: “My hreflang isn’t working” — validation runbook
暫定日本語案: Run これらの in order. 各 手順 either finds break または clears suspect.
暫定日本語案: 手順 1 — Confirm tags actually render. 暫定日本語案: Open ページ と view rendered DOM (GSC URL Inspection → テスト Live URL → 暫定日本語案: View テスト ページ, または rendering crawler). Do ない rely on Ctrl+U “View Page Source” — if hreflang is JS-injected it won’t 表示される there even though it’s live.
- 暫定日本語案: Tags present in rendered head → go へ 手順 3.
- 暫定日本語案: Tags 不足している から rendered head → 手順 2.
暫定日本語案: 手順 2 — Are tags in <head> または <body>?
暫定日本語案: If tags exist in ソース ただし sit inside <body>, それら’re 無効. malformed または
暫定日本語案: injected <p> tag または iframe likely closed <head> early. 使用 ブラウザー DOM
暫定日本語案: breakpoints へ find どこ <head> breaks, fix その markup, re-確認.
暫定日本語案: 手順 3 — 確認 URLs are absolute と canonical.
暫定日本語案: すべての href 必要がある be fully-qualified (https://…) と byte-identical へ インデックス登録
暫定日本語案: form (protocol, www, trailing slash, ケース). Confirm none point at 301, 404,
暫定日本語案: noindexed, または canonicalized-away URL.
暫定日本語案: 手順 4 — 確認 reciprocity 全体で whole cluster. 暫定日本語案: クロール entire cluster (Screaming Frog / Ahrefs サイト Audit). 向けに すべての →B, verify 暫定日本語案: matching B→ exists, と その 各 ページ self-references. この is どこ 大半の breaks 暫定日本語案: live — single 不足している return tag drops pair.
暫定日本語案: 手順 5 — Validate codes.
暫定日本語案: Confirm ISO 639-1 言語 + ISO 3166-1 alpha-2 地域. Look specifically 向けに
暫定日本語案: en-UK (→ en-GB), jp (→ ja), three-letter codes, と 地域-だけ codes.
暫定日本語案: 手順 6 — Rule out geo-リダイレクト. 暫定日本語案: Confirm crawlers aren’t being geo-リダイレクト. If Googlebot (クロール から US) 暫定日本語案: gets bounced へ あなた US version, あなた other regional URLs 可能性がある 決して be reached.
暫定日本語案: 手順 7 — Reset expectations if cluster is technically 正しい.
暫定日本語案: If everything above checks out と 同じ-言語 variants (e.g. fr-fr / fr-be)
暫定日本語案: are still consolidated in レポート, その’s expected — Google できる consolidate
暫定日本語案: near-identical 同じ-言語 variants regardless of implementation. It’s hint, ない
暫定日本語案: directive; 誤った または ignored hreflang is ない penalty. Stop chasing it as bug.
Implementation anti-patterns
暫定日本語案: Concrete mistakes, なぜ それら’re 誤った, と 何 へ do instead.
暫定日本語案: 1. Hand-maintaining hreflang per ページ. 暫定日本語案: なぜ it’s 誤った: moment one template または locale drifts, return tags go 不足している 暫定日本語案: と pairs get dropped — reciprocity rot at scale. 暫定日本語案: Do instead: generate すべての annotation から one ソース of truth (translation table, 暫定日本語案: CMS field, または Sheets template 向けに small サイト), so whole cluster is 暫定日本語案: regenerated, ない edited.
暫定日本語案: 2. Using all three 方法 向けに “extra signal.” 暫定日本語案: なぜ it’s 誤った: Google says there’s no benefit, と three copies of truth means 暫定日本語案: three chances 向けに them へ disagree. 暫定日本語案: Do instead: pick one 方法 と 使用 it alone.
暫定日本語案: 3. Auto-redirecting crawlers by geo/IP. 暫定日本語案: なぜ it’s 誤った: Googlebot crawls mostly から US, so crawler geo-リダイレクト できる 暫定日本語案: de-インデックス登録 あなた other regional clusters entirely — plus cloaking と EU 暫定日本語案: anti-geoblocking exposure. 暫定日本語案: Do instead: リダイレクト (または better, banner-prompt) ユーザー だけ; 決して crawlers. Let 暫定日本語案: bots reach すべての URL directly と let hreflang carry signal.
暫定日本語案: 4. Pointing hreflang at non-canonical, リダイレクト, または noindexed URLs.
暫定日本語案: なぜ it’s 誤った: return link resolves へ 301/404/noindexed ページ, so
暫定日本語案: pair breaks (16,9% referenced broken/リダイレクト ページ, 8,0% non-canonical in my
暫定日本語案: study).
暫定日本語案: Do instead: 各 variant canonicalizes へ itself; hreflang points だけ at live,
暫定日本語案: canonical, indexable URLs — regenerated whenever URLs change.
暫定日本語案: 5. Relative または protocol-relative URLs.
暫定日本語案: なぜ it’s 誤った: Google 必要とする fully-qualified URLs; /foo と //example.com/foo
暫定日本語案: are 無効, と even absolute-ただし-mismatched forms (誤った slash/www/ケース) fail
暫定日本語案: reciprocity match.
暫定日本語案: Do instead: 常に https://example.com/foo, matching exact インデックス登録 form.
暫定日本語案: 6. Trusting “View Page Source” as validation.
暫定日本語案: なぜ it’s 誤った: JS-injected hreflang doesn’t 表示される in raw ソース, so あなた either
暫定日本語案: think it’s 不足している (it isn’t) または miss その it renders in <body> (無効).
暫定日本語案: Do instead: validate rendered DOM via GSC URL Inspection または rendering
暫定日本語案: crawler.
暫定日本語案: 7. 誤った または invented locale codes.
暫定日本語案: なぜ it’s 誤った: en-UK, jp, ger, と 地域-だけ codes are 無効 と
暫定日本語案: ignored.
暫定日本語案: Do instead: ISO 639-1 言語 + optional ISO 3166-1 alpha-2 地域 — en-GB,
暫定日本語案: ja, de, es-MX.
前に / 後に
暫定日本語案: 1. 不足している reciprocal tag ( classic). 暫定日本語案: 前に: US ページ lists US + UK + DE, ただし German ページ’s template だけ lists 暫定日本語案: DE + US — it forgot UK return link. Google drops DE↔UK pair. 暫定日本語案: 後に: German ページ’s block lists DE + US + UK (all self-referencing と 暫定日本語案: reciprocal). Regenerated から locale table so it できる’t drift again.
暫定日本語案: 2. Relative URLs.
暫定日本語案: 前に: <link rel="alternate" hreflang="de" href="/de/" /> — relative, so it’s
暫定日本語案: 無効 と ignored.
暫定日本語案: 後に: <link rel="alternate" hreflang="de" href="https://example.com/de/" /> —
暫定日本語案: fully-qualified と matching インデックス登録 form.
暫定日本語案: 3. 誤った UK code.
暫定日本語案: 前に: <link rel="alternate" hreflang="en-uk" href="https://example.com/uk/" />
暫定日本語案: — uk is Ukrainian; annotation is 無効.
暫定日本語案: 後に: <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />.
暫定日本語案: 4. Sitemap 不足している namespace.
暫定日本語案: 前に: sitemap using <xhtml:link> entries ただし とともに <urlset> その だけ
暫定日本語案: declares base sitemaps namespace — すべての <xhtml:link> is 無効.
暫定日本語案: 後に: <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> — the xhtml namespace is declared, so
暫定日本語案: annotations validate.
Ready-へ-copy AI prompts
暫定日本語案: Adapt placeholders, then paste へ あなた assistant of choice. 常に validate 暫定日本語案: output against real クロール — LLM できる generate plausible-ただし-誤った codes または miss 暫定日本語案: return link.
暫定日本語案: Generate HTML <head> block から locale matrix
I have these language/region page variants:
- en-US: https://example.com/us/
- en-GB: https://example.com/uk/
- de: https://example.com/de/
- global fallback / selector: https://example.com/
For EACH page above, output the complete hreflang <link> block that belongs in its
<head>. Every block must (a) self-reference, (b) list all other variants, and
(c) include an x-default pointing at the fallback. Use fully-qualified https URLs
exactly as given. Validate the codes as ISO 639-1 language + ISO 3166-1 alpha-2
region and flag any that look wrong.暫定日本語案: Convert 同じ matrix へ XML sitemap block
Using the same variant list, output an XML sitemap that uses <xhtml:link> hreflang
annotations. Requirements: declare xmlns:xhtml="http://www.w3.org/1999/xhtml" on
<urlset>; give every <url> block a full self-referencing + all-alternates set; use
the exact URLs provided. Do not add any URL not in my list.暫定日本語案: Audit pasted cluster 向けに reciprocity + code errors
Here are the hreflang tags from each page in my cluster: [paste each page's URL and
its hreflang tags]. Check for: missing self-reference, missing reciprocal (A->B
without B->A), invalid ISO codes, relative/protocol-relative URLs, and any URL that
appears with inconsistent formatting (trailing slash / www / case). List each issue
with the exact page and tag it's on. Do not assume tags I didn't paste. Extraction, console, と generation snippets
暫定日本語案: Practical one-liners 向けに 構築 と 確認 hreflang. Adjust URLs 前に running.
暫定日本語案: Chrome DevTools Console — list hreflang tags on 現在の ページ 暫定日本語案: Paste へ Console (F12 → Console) on any ページ へ see 何 ブラウザー actually 暫定日本語案: rendered — この reflects JS-injected tags その “View Source” misses:
[...document.querySelectorAll('link[rel="alternate"][hreflang]')]
.map(l => ({ hreflang: l.hreflang, href: l.href,
inHead: !!l.closest('head') }));暫定日本語案: inHead flag is tell 向けに <head>-break bug: any tag 表示
暫定日本語案: inHead: false is rendering in <body> と is 無効.
暫定日本語案: Bookmarklet — 同じ 確認, one クリック 暫定日本語案: Save as bookmark とともに この URL, then クリック it on any ページ:
javascript:(()=>{const t=[...document.querySelectorAll('link[rel="alternate"][hreflang]')].map(l=>`${l.hreflang} ${l.href} ${l.closest('head')?'(head)':'(BODY - INVALID)'}`);alert(t.length?t.join('\n'):'No hreflang tags found');})();暫定日本語案: XPath — select hreflang links inside head (向けに crawler / ブラウザー inspector)
//head/link[@rel='alternate' and @hreflang]暫定日本語案: If crawler finds link[@hreflang] matches 下で //body instead, その’s
暫定日本語案: head-break bug.
暫定日本語案: Regex — pull hreflang code + URL から raw HTML (quick grep, ない real parser)
<link[^>]*rel=["']alternate["'][^>]*hreflang=["']([^"']+)["'][^>]*href=["']([^"']+)["']暫定日本語案: Capture group 1 is code, group 2 is URL. 使用 だけ 向けに fast sanity grep — 暫定日本語案: parse real HTML とともに DOM library, ない regex.
暫定日本語案: curl — 確認 向けに hreflang in HTTP Link: レスポンス headers ( PDF/non-HTML ケース)
curl -sI https://example.com/file.pdf | grep -i '^link:'暫定日本語案: Python — generate self-consistent hreflang <head> block から matrix
variants = {
"en-us": "https://example.com/us/",
"en-gb": "https://example.com/uk/",
"de": "https://example.com/de/",
"x-default": "https://example.com/",
}
# Every page gets the SAME full block (self-reference + all alternates),
# which is exactly what satisfies reciprocity.
block = "\n".join(
f'<link rel="alternate" hreflang="{code}" href="{url}" />'
for code, url in variants.items()
)
print(block) テスト yourself: Implementing hreflang
暫定日本語案: Five quick questions on 構築 hreflang cluster correctly. Pick answer 向けに 暫定日本語案: 各, then 確認.
時間を使う価値のあるリソース
暫定日本語案: My related writing
- 暫定日本語案: Hreflang: Easy Guide 向けに Beginners — my Ahrefs guide とともに all three 方法, nine 一般的な implementation 問題 と fixes, と Google Sheets template 向けに semi-automated hreflang generation at scale.
- 暫定日本語案: 超えて 67% of Domains Using Hreflang Have 問題 — my study of 374 756 domains, largest ever run, と ソース of error-rate breakdown (不足している x-デフォルト 56,3%, 不足している self-reference 18,0%, broken/リダイレクト targets 16,9%, 不足している reciprocal 15,3%, non-canonical 8,0%, bad codes 4,6%).
暫定日本語案: My speaking
- 暫定日本語案: International SEO: Weird Technical Parts — Pubcon Vegas 2019 — richest implementation ソース:
<head>-break bug (tags forced へ<body>by iframes/malformed markup) と DOM-breakpoint debugging, なぜ “sitemaps are faster” is myth, geo-リダイレクト de-インデックス登録 risk, と&hl=/&gl=SERP-確認 technique. - 暫定日本語案: Hreflang Study と Interesting 問題 — Brighton SEO 2023 — deck behind study, plus Google’s 大半の-specific matching order (言語+国 → 言語 → x-デフォルト) と 大半の 一般的な code mistakes 全体で dataset.
- 暫定日本語案: あなた’re Going へ Screw Up International SEO — Pubcon Vegas 2017 — ecosystem of implementation chaos: ツール レポート 誤った info, コンテンツ served から URLs その differ から 何’s インデックス登録, duplicate-ページ traps.
暫定日本語案: から around industry
- 暫定日本語案: Google’s Localized versions of あなた ページ — 主要 implementation doc; exact syntax 向けに all three 方法, reciprocity/self-reference rules, 有効 codes, と absolute-URL requirement. Read it in full 前に あなた 構築.
- 暫定日本語案: Google’s Managing multi-regional と multilingual サイト — URL-structure options と auto-リダイレクト / cloaking warning behind “redirect users, not crawlers.”
- 暫定日本語案: WPML — Using WordPress SEO (Yoast) とともに WPML — どのように WordPress actually outputs hreflang (Yoast alone doesn’t), と head-vs-sitemap output 設定.
- 暫定日本語案: Shopify — 追加 hreflang tags in あなた theme — 手動
theme.liquid<link>pattern 向けに いつ Shopify Markets’ 言語-だけ tags aren’t specific enough. - 暫定日本語案: Screaming Frog — どのように へ Audit & テスト Hreflang — クロール-based workflow 向けに confirming reciprocity 全体で whole cluster rather than spot-確認 one URL.
- 暫定日本語案: Google Reminds その Hreflang Tags Are Hints, ない Directives — 検索エンジン Journal, 可能性がある 2025, on Mueller’s 同じ-言語-consolidation clarification (なぜ technically perfect cluster できる still be consolidated).
- 暫定日本語案: r/TechSEO — community 向けに debugging broken hreflang clusters.
Prove hreflang cluster actually shipped
暫定日本語案: Hreflang fails silently: tags できる be present, well-formed, と still ignored if 暫定日本語案: return leg is 不足している. “It’s in the code” is ない テスト — reciprocity 全体で whole 暫定日本語案: cluster is. Run これらの 後に あなた deploy 言語/地域 設定.
テスト 1 — すべての pair returns tag (reciprocity)
- 暫定日本語案: テスト へ run — クロール whole cluster とともに returntag 暫定日本語案: (it checks その すべての ページ points へ actually points back at ), または run Screaming Frog’s 暫定日本語案: hreflang レポート 全体で 設定.
- 暫定日本語案: Expected result — 0 non-reciprocal pairs と すべての URL self-references. Zero errors, 暫定日本語案: ない “a few.”
- 暫定日本語案: Failure interpretation — one-way pair ( → B ただし B doesn’t → ) means Google drops 暫定日本語案: その pair — 大半の 一般的な real-world failure, と invisible if あなた だけ spot-確認 one 暫定日本語案: URL’s view-ソース.
- 暫定日本語案: 監視 window — Immediate 向けに rendered tags; checker reads 何’s live 現在.
- 暫定日本語案: Rollback trigger — Any non-reciprocal pair, または tag pointing at URL その 301s または 404s 暫定日本語案: — fix ソース of truth と redeploy 前に waiting on Google.
テスト 2 — Google is processing it cleanly
- 暫定日本語案: テスト へ run — Google retired 古い International Targeting レポート in 暫定日本語案: 検索 Console in September 2022, so don’t rely on it — 確認 ページ 暫定日本語案: インデックス登録 向けに 各 locale in cluster, と confirm via URL Inspection 暫定日本語案: on sample of ページ その “Google-selected canonical” と インデックス登録 status 暫定日本語案: line up とともに 何 あなた expect 向けに その locale.
- 暫定日本語案: Expected result — 各 locale’s intended ページ are インデックス登録 (ない 暫定日本語案: “Duplicate, Google chose different canonical” in way その collapses distinct 暫定日本語案: 言語 versions へ one), と URL Inspection 表示 alternate あなた expect.
- 暫定日本語案: Failure interpretation — ページ 表示 up as duplicates of 異なる 暫定日本語案: locale’s canonical, または clustered/consolidated インデックス登録, usually traces back へ 暫定日本語案: broken return leg (re-確認 テスト 1) rather than hreflang itself — hreflang is 暫定日本語案: hint, ない directive, so technically perfect cluster できる still be 暫定日本語案: consolidated if Google judges コンテンツ near-duplicate.
- 暫定日本語案: 監視 window — 2–4 weeks — 検索 Console re-crawls と レポート 暫定日本語案: cluster 超えて time, ない instantly.
- 暫定日本語案: Rollback trigger — locale’s ページ consistently インデックス登録 下で 誤った 暫定日本語案: canonical, または 誤った regional URL surfacing 向けに クエリ — re-audit 暫定日本語案: reciprocity 最初; don’t assume tags “aren’t working” いつ return leg 暫定日本語案: is actual gap.
変更履歴
2026年7月25日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年7月18日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。