Skip to main content
← πŸ“„ HTML & the platformΒ·Module A6 Β· Lesson 4
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/post vs example.com/post/ (trailing slash)
  • https://example.com/post vs https://www.example.com/post
  • /post vs /post?ref=twitter&utm_campaign=launch
  • /post vs /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. /post doesn't work β€” must be full https://....
  • Self-referential is fine. /post can 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=twitter variants, 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.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.