Jak usunąć rozszerzenie .html z linku canonical w Astro

Problem z rozszerzeniem .html w canonical URL w Astro#

Podczas konfigurowania Astro z ustawieniem build.format: "file", framework dodaje niepożądane rozszerzenie .html do linków canonical. Bug powoduje niespójność między faktycznymi adresami stron a deklarowanymi URL-ami canonical.

Czym jest problem?#

Gdy skonfigurujesz Astro do generowania plików w trybie file (używając build.format: "file"), Astro automatycznie doda rozszerzenie .html do wszystkich adresów URL canonical. Na przykład:

  • Zamiast /blog/wpis1
  • Otrzymujesz /blog/wpis1.html

Dlaczego to jest problem SEO?#

Canonical URL z rozszerzeniem .html może powodować następujące problemy:

  • Duplikacja treści - wyszukiwarki mogą traktować /blog/wpis1 i /blog/wpis1.html jako dwie różne strony
  • Rozcieńczenie wartości SEO - sygnały rankingowe mogą być rozdzielone między różne wersje URL
  • Niespójność - jeśli Twoje linki wewnętrzne nie używają .html, a canonical URL używa, powstaje niespójność
  • Problemy z indeksowaniem - Google może wybrać niewłaściwą wersję URL jako kanoniczną

Rozwiązanie problemu#

Aby naprawić ten problem, musisz zmodyfikować swój szablon (np. Layout.astro), gdzie wstawiasz tag canonical URL.

Znajdź istniejący tag canonical#

Otwórz plik z szablonem (np. src/layouts/Layout.astro) i znajdź linię z canonical URL:

<link rel="canonical" href={Astro.url.href} />

Zastąp go poprawioną wersją#

Zamień powyższą linię na następującą, która usuwa rozszerzenie .html:

<link rel="canonical" href={Astro.url.href.replace(/\.html$/, '')} />

Jak to działa?#

Wyrażenie regularne /\.html$/ znajduje .html na końcu URL i zamienia je na pusty string, efektywnie usuwając rozszerzenie z canonical URL.

Po tej zmianie:

  • blog/wpis1.html/blog/wpis1
  • about.html/about

To jest workaround#

IMPORTANT

To rozwiązanie jest tymczasowym obejściem (workaround) problemu, który do tej pory nie został naprawiony w samym Astro. Warto śledzić oficjalne issue na GitHubie Astro, aby sprawdzić, czy problem został rozwiązany w nowszych wersjach.

Powiązane problemy z Cloudflare Pages#

Jeśli używasz Astro wraz z Cloudflare Pages, możesz również napotkać inny problem - automatyczne dodawanie ukośników na końcu linku. W takim przypadku sprawdź mój artykuł: Problem z dodawaniem ukośników na końcu linku


Więcej artykułów o tej tematyce, znajdziesz w kategorii cloudflare