International SEO (i18n) Playbook
Done right, multilingual SEO unlocks global search demand. Done wrong, it becomes duplicate content, wrong-language rankings, and indexing chaos. This guide covers URL structure, hreflang, canonicals, and Cloudflare Pages gotchas.
1) URL structure: path prefixes (/en) are a practical default
- Consolidated authority: one domain compounds signals faster
- Simpler deployments: static output works great on Cloudflare Pages
- Consistent internal linking: tutorials ↔ glossary ↔ tools can mirror structure
The key is consistency: each locale must have its own URL, its own canonical, and hreflang mappings.
2) hreflang: pair language variants correctly
hreflang is not a ranking boost. It helps search engines serve the right language/region page to the right user and reduces wrong-language rankings.
<link rel="alternate" hreflang="zh-TW" href="https://seo.lucas-futures.com/tools" />
<link rel="alternate" hreflang="en" href="https://seo.lucas-futures.com/en/tools" />
<link rel="alternate" hreflang="x-default" href="https://seo.lucas-futures.com/en/tools" />- Self-referential: include the current page in the hreflang set
- Reciprocal: if A points to B, B must point back to A
- x-default: your fallback when no language matches
Glossary: hreflang
3) Canonicals: self-canonical for each locale
A common mistake is cross-language canonicalization (English canonical to Chinese, or vice versa). That turns language variants into duplicates and usually collapses indexing to one version.
<!-- zh-TW page -->
<link rel="canonical" href="https://seo.lucas-futures.com/glossary/seo" />
<!-- en page -->
<link rel="canonical" href="https://seo.lucas-futures.com/en/glossary/seo" />Glossary: canonical URL, duplicate content
4) Content quality: don’t turn i18n into thin content
- Don’t translate only navigation: translate key pages (home/tools/tutorials/glossary)
- Avoid low-quality machine translation: thin pages dilute site-wide quality signals
- Keep structure consistent: summaries, steps and FAQs are great for AEO
5) Cloudflare Pages gotchas (important)
If you prerender per-route HTML, avoid SPA catch-all rewrites that override route files. Otherwise every path may return the same HTML, breaking per-page OG and SEO.
- Keep `dist/**/index.html` per route
- Ensure
<html lang>is correct (zh-TW / en) - Include all locale URLs in your sitemap (this site generates it automatically)
Related
FAQ
Common multilingual SEO questions.