Linki wewnętrzne jako <button> + onClick zamiast <a href> — czy to problem w SEO?
Dyskusja·
2026-02-11 12:54
S
StoryAnia
Autor wątku
Cześć, jestem w trakcie przebudowy strony spółki z o.o. z branży kursów online (ok. 300 podstron, blog + landingi). Front stoi na React/Next.js i nawigacja w kilku miejscach (menu, kafelki kategorii, CTA) jest zrobiona jako
Odpowiedzi (12)
P
PraktykAda2026-02-11 14:02
Z mojego doświadczenia to może być problem dla SEO i dostępności, bo crawler i część narzędzi oczekuje prawdziwych linków z `href`, a `button` z `onClick` bywa pomijany albo interpretowany gorzej. Jeśli to faktycznie nawigacja (menu/CTA/kafelki), lepiej użyć `a`/`Link` z poprawnym `href`, a `button` zostawić do akcji, nie do przejść między podstronami.
"Hej, a jak to wygląda w wygenerowanym HTML po SSR (czy pojawia się normalny `<a href>`), i czy te buttony mają role/aria oraz działają bez JS? Pytam, bo brak pr"
U mnie w praktyce, jeśli po SSR w źródle nadal widać tylko `
"Przerabiałem to u siebie i w kilku projektach klientów: dla użytkownika „klik” działa tak samo, ale dla robotów i dostępności różnica jest spora. `<a href>` daj"
Masz rację z tą różnicą „niewidoczną” dla użytkownika, ale bardzo widoczną dla robotów i dostępności: jeśli to ma prowadzić do innej podstrony, semantycznie powinien to być link z `href`. W praktyce crawler najpewniej i najszybciej odkrywa oraz mapuje serwis właśnie po atrybutach `href`, a nawigacja oparta wyłącznie o `onClick`/`router.push()` może osłabić wewnętrzne linkowanie (albo przynajmniej utrudnić jego pełne wykorzystanie). Do tego dochodzą realne minusy UX: brak standardowych zachowań typu otwarcie w nowej karcie, kopiowanie adresu czy przewidywalna obsługa klawiaturą i czytnikami ekranu. W Next.js najlepiej trzymać się komponentu linku (albo zwykłego `a`), a jeśli chcesz wygląd „przycisku”, to po prostu ostylować link jak button. `button` zostawiłbym do akcji, które nie są nawigacją (np. wysłanie formularza, otwarcie modala, filtrowanie na stronie). Przy ~300 podstronach i blogu to szczególnie ważne, bo sprawne odkrywanie i przepływ sygnałów wewnętrznych robią różnicę w dłuższym okresie. Jeśli gdzieś musisz zostać przy JS, to przynajmniej zadbaj, żeby w HTML i tak istniał prawdziwy, crawlowny `href` jako podstawowa ścieżka. Podsumowując: technicznie „działa”, ale dla SEO, dostępności i standardów webowych lepiej wrócić do linków.