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/wpis1i/blog/wpis1.htmljako 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/wpis1about.html→/about
To jest workaround
IMPORTANTTo 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

