TaskBuild the head for a blog post that exists at /blog/why-fastapi with self-canonical 'https://learnpython.academy/blog/why-fastapi'. Title 'Why FastAPI', meta description 'A practical case for FastAPI over Flask in 2026.'
canonical: the one true URL
100 XP7 min
Theory
Why canonical exists
The same content can live at multiple URLs without you meaning it to:
example.com/postvsexample.com/post/(trailing slash)https://example.com/postvshttps://www.example.com/post/postvs/post?ref=twitter&utm_campaign=launch/postvs/p/123(alias)
Google sees them as separate pages. PageRank gets split. Each version competes against the others. The fix:
<link rel="canonical" href="https://example.com/post" />
Tells Google "if you found this content at any other URL, treat THIS one as the master copy. Consolidate all rankings here."
Rules
- Absolute URL.
/postdoesn't work β must be fullhttps://.... - Self-referential is fine.
/postcan have<link rel="canonical" href="https://example.com/post" />pointing at itself. Even recommended. - Cross-domain works. Republished content can canonical-link back to the original.
- Match the path you want indexed. If your CMS generates
?ref=twittervariants, the canonical should be the clean URL.
hreflang vs canonical
Confusing pair:
- canonical says "this URL is the master version of these duplicates."
- hreflang says "this is the EN version; the FR translation lives at /fr/post."
A multi-language page has BOTH: canonical to itself (the EN URL), plus hreflang siblings to its translations.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.