webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
SEO · Lecția 2 din 5

SEO tehnic

robots.txt vs noindex, sitemap, canonical, status-uri și redirect-uri, JSON-LD.

Actualizat

Ce este SEO-ul tehnic

SEO tehnic = să te asiguri că motoarele de căutare pot găsi, citi, înțelege și indexa corect fiecare pagină — și că nu indexează ce nu trebuie. E partea care depinde aproape în întregime de developer. Conținutul excelent nu contează dacă Google nu ajunge la el.

robots.txt — ce are voie să parcurgă crawler-ul

Fișier la rădăcina domeniului (/robots.txt) cu reguli pentru crawlere:

User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /api/og/
Sitemap: https://site.ro/sitemap.xml
Regulă Înseamnă
User-agent: * pentru toți roboții (sau Googlebot, GPTBot etc.)
Disallow: /admin/ nu parcurge căile care încep cu /admin/
Allow excepție dintr-un Disallow — câștigă regula cea mai specifică (cea mai lungă)
Sitemap unde e sitemap-ul

Capcana majoră: Disallow nu scoate o pagină din index. Google poate indexa URL-ul (fără conținut) dacă primește linkuri spre el. Ca să nu fie indexată, pagina trebuie să fie accesibilă și să aibă noindex.

// app/robots.ts
export default function robots(): MetadataRoute.Robots {
  return { rules: [{ userAgent: '*', disallow: ['/admin/', '/api/'] }], sitemap: 'https://site.ro/sitemap.xml' }
}

Meta robots — ce are voie să indexeze

<meta name="robots" content="noindex, follow" />
Valoare Efect
noindex nu pune pagina în rezultate
nofollow nu urma linkurile de pe pagină
noarchive, nosnippet, max-image-preview:large controlul afișării

Pentru fișiere non-HTML (PDF) folosești header-ul HTTP X-Robots-Tag: noindex. În Next: metadata.robots = { index: false }.

Ce pui pe noindex: pagini de căutare internă, rezultate filtrate fără valoare, coș, cont, mulțumiri după comandă, pagini de test / preview (Vercel adaugă automat noindex pe preview-uri).

Sitemap

O listă cu toate URL-urile pe care vrei să le indexeze Google, cu data ultimei modificări. Generat din date în Next (app/sitemap.ts — vezi Metadata și SEO). Trimis în Search Console. Doar URL-uri canonice, cu status 200, indexabile.

Canonical — o singură versiune a fiecărei pagini

Aceeași pagină poate fi accesibilă la mai multe URL-uri:

https://site.ro/produs/laptop
https://site.ro/produs/laptop?utm_source=facebook
https://www.site.ro/produs/laptop/

Pentru Google sunt pagini duplicate care își împart semnalele. Canonical spune care e originalul:

<link rel="canonical" href="https://site.ro/produs/laptop" />

În Next: alternates: { canonical: '/produs/laptop' } + metadataBase. Alege o formă și impune-o peste tot: cu sau fără www, cu sau fără / la final, fără parametri de tracking.

Status codes și redirect-uri

Situație Status corect
pagina există 200
URL schimbat definitiv 301 / 308 — transferă semnalele SEO
temporar 302 / 307
nu există 404 (nu 200 cu „nu am găsit” — „soft 404”)
șters definitiv 410
server căzut temporar 503

În Next: redirect() / permanentRedirect(), redirects în next.config.ts, notFound().

Date structurate (JSON-LD)

Un bloc JSON care descrie ce este pagina — produs, articol, rețetă, eveniment, FAQ — în vocabularul schema.org. Google îl folosește pentru rich results: stele, preț, disponibilitate, breadcrumbs.

const jsonLd = {
  '@context': 'https://schema.org',
  '@type': 'Product',
  name: product.name,
  offers: { '@type': 'Offer', price: product.price, priceCurrency: 'RON', availability: 'https://schema.org/InStock' },
}

<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd).replace(/</g, '\\u003c') }} />

Verifici cu Rich Results Test.

Alte lucruri tehnice care contează

Element De ce
HTTPS semnal de ranking, obligatoriu
mobil (viewport, layout responsive) Google indexează versiunea mobilă (mobile-first indexing)
Core Web Vitals parte din experiența paginii
hreflang site-uri în mai multe limbi: alternates.languages în Next
URL-uri curate /blog/titlu-articol, nu /p?id=123&ref=x
linkuri interne cu <a href> Googlebot urmează doar linkuri reale, nu onClick
imagini cu alt și nume descriptive apar și în Google Images — vezi Optimizarea imaginilor

Pe scurt

  • robots.txt controlează crawling-ul; noindex controlează indexarea — nu le confunda.
  • Sitemap cu URL-urile canonice; canonical pentru duplicate; status-uri și redirect-uri corecte.
  • JSON-LD pentru rich results; mobil, HTTPS, viteză, linkuri reale.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.