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.txtcontrolează crawling-ul;noindexcontrolează 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.