JavaScript SEO

Cunoscut și ca: SEO pentru JavaScript, optimizare SEO pentru JavaScript, SEO pentru site-uri JavaScript
Ce este JavaScript SEO?
Pe scurt
JavaScript SEO reprezintă optimizarea site-urilor care folosesc JavaScript, astfel încât paginile, conținutul și linkurile lor să poată fi accesate, randate și indexate de motoarele de căutare. Procesul urmărește răspunsul HTML, DOM-ul randat, resursele necesare, codurile HTTP, linkurile, metadatele și regulile de accesare.
JavaScript SEO este partea de SEO tehnic dedicată site-urilor în care JavaScript generează sau modifică elemente importante. Acestea pot include conținutul principal, linkurile, titlul, descrierea meta și adresa canonică.
Cum procesează Google paginile
Google procesează aplicațiile JavaScript în trei faze principale: crawling, randare și indexare. Googlebot verifică mai întâi dacă accesarea URL-ului este permisă prin robots.txt. Apoi analizează răspunsul HTML și extrage adresele din elementele <a> care au atributul href.
Paginile cu răspuns HTTP 200 sunt introduse în coada de randare, dacă o directivă robots nu împiedică indexarea. Când resursele permit, serviciul de randare execută JavaScript într-o versiune evergreen de Chromium. Google analizează din nou HTML-ul randat, descoperă linkuri și folosește conținutul rezultat pentru indexare.
Într-un site randat pe client, răspunsul HTML inițial poate conține doar structura aplicației. Conținutul real devine disponibil după executarea JavaScript. Erorile de cod, resursele blocate sau funcțiile incompatibile pot împiedica apariția conținutului în DOM-ul randat.
Alegerea metodei de randare
Randarea pe server trimite către client HTML generat pe server. Randarea statică produce în avans câte un fișier HTML pentru fiecare URL. Hidratarea adaugă stare și interactivitate peste HTML-ul randat pe server.
Google recomandă randarea pe server, randarea statică sau hidratarea în locul randării dinamice. Randarea dinamică este doar o soluție temporară pentru limitările asociate conținutului generat prin JavaScript. Dacă este folosită, conținutul oferit crawlerelor trebuie să fie similar cu cel oferit utilizatorilor.
De ce contează în SEO?
JavaScript SEO contează când elementele necesare în căutare nu sunt prezente direct în răspunsul HTML. Dacă JavaScript nu se execută corect, Google poate să nu găsească anumite texte, linkuri sau metadate în HTML-ul randat. Resursele JavaScript blocate în robots.txt nu sunt randate de Google.
Linkurile interne trebuie implementate ca elemente <a> cu atributul href. Pentru aplicațiile SPA, Google recomandă History API în locul fragmentelor URL folosite pentru încărcarea unor pagini diferite. Paginile inexistente trebuie să transmită un cod HTTP relevant sau să primească directiva noindex, pentru a evita erorile soft 404.
Titlurile și descrierile meta pot fi modificate prin JavaScript. Pentru URL-ul canonic, Google recomandă folosirea HTML-ului. Dacă adresa canonică este setată prin JavaScript și este prezentă și în HTML-ul inițial, valorile trebuie să fie identice.
Exemplu
Un magazin online din România folosește o aplicație SPA. La accesarea unui produs inexistent, aplicația afișează mesajul „Produs indisponibil”, dar serverul răspunde cu status HTTP 200. Această implementare poate produce o eroare soft 404 și poate permite indexarea paginii de eroare.
O variantă recomandată este redirecționarea către un URL pentru care serverul răspunde cu 404:
fetch(`/api/produse/${productId}`)
.then(response => response.json())
.then(product => {
if (product.exists) {
showProductDetails(product);
} else {
window.location.href = '/produs-inexistent';
}
});
Serverul trebuie să returneze statusul HTTP 404 pentru /produs-inexistent. Alternativ, aplicația poate adăuga directiva noindex pe pagina de eroare.
Cum verifici?
- Deschide URL Inspection Tool din Google Search Console și testează URL-ul afectat.
- Verifică răspunsul HTTP și confirmă că URL-ul nu este blocat prin
robots.txt. - Analizează DOM-ul randat și caută titlul, conținutul principal, linkurile și adresa canonică.
- Consultă resursele încărcate, mesajele din consola JavaScript și excepțiile raportate de instrument.
- Rulează Rich Results Test pentru a vedea cum accesează și randează Google pagina.
- Compară răspunsul HTML inițial cu DOM-ul rezultat după executarea JavaScript.
- Verifică în raportul Crawl Stats din Google Search Console activitatea Googlebot și WRS.
- După remediere, testează din nou pagina cu URL Inspection Tool sau Rich Results Test.
Ce trebuie să faci?
- Include conținutul esențial în HTML prin randare pe server, randare statică sau o implementare cu hidratare, când arhitectura permite.
- Permite accesarea fișierelor JavaScript și CSS necesare randării.
- Folosește elemente
<a>cu atributulhrefpentru linkurile interne. - Folosește History API, nu fragmente URL, pentru navigarea între paginile unei aplicații SPA.
- Returnează coduri HTTP relevante pentru pagini inexistente, pagini protejate și redirecționări.
- Evită schimbarea prin JavaScript a adresei canonice declarate în HTML.
- Folosește detectarea funcțiilor, fallback-uri HTTP și polyfill-uri acolo unde sunt aplicabile.
- Folosește nume de fișiere bazate pe amprenta conținutului pentru resursele JavaScript și CSS actualizate.
Greșeli frecvente
- Conținutul principal există numai după executarea unui JavaScript care produce erori.
- Fișierele JavaScript necesare randării sunt blocate prin robots.txt.
- Linkurile interne folosesc fragmente URL sau elemente fără atributul href.
- O aplicație SPA returnează status HTTP 200 pentru pagini inexistente.
- Randarea dinamică este tratată ca soluție permanentă sau oferă crawlerelor conținut complet diferit.
Perspectiva SEO 365
Verificăm răspunsul HTML și DOM-ul randat înaintea altor ajustări. Urmărim ca textul esențial, linkurile și directivele de indexare să rămână accesibile fără dependențe JavaScript fragile. Evităm folosirea randării dinamice ca soluție permanentă.