Producție: SEO — meta pe pagină, sitemap, 404 real și canonice
Pachetul de SEO pentru hyperice.md, luat ca CONȚINUT de pe develop
(cherry-pick, nu merge: istoriile au divergit, iar un merge direct ar da
conflicte pe aceleași modificări venite pe două drumuri).
Verificat: după cherry-pick, git diff origin/develop arată o singură linie
— eticheta de runner a jobului deploy:production, care e diferită pe main
intenționat (hyperice-prod-shell). În rest, ramura asta e, la nivel de
fișiere, exact develop.
Ce intră
Meta pe fiecare pagină. Până acum index.html avea un singur titlu și o
singură descriere, statice, în engleză, pentru tot site-ul: toate produsele,
colecțiile și paginile de terapie arătau identic în Google. Acum fiecare pagină
are titlu, descriere, canonical, Open Graph și limba documentului. Paginile
statice își iau textele din chei noi seo.* (RO/RU/EN); produsele, colecțiile
și articolele din catalog. Comanda, confirmarea, contul și ecranele „nu am
găsit" sunt noindex.
404 real. Orice adresă inexistentă răspundea 200 cu shell-ul aplicației — ce raportează Search Console ca „soft 404". nginx știe acum ce căi sunt rute; restul primesc 404, tot cu ecranul aplicației.
Canonice și 301. 17 aliasuri (forma singulară de produs, adresele
/pages/…, slugurile românești ale paginilor legale, punctele de intrare în
magazin) devin redirecturi permanente spre pagina canonică, în loc de a doua
copie a ei. Rulează după try_files, deci fișierele reale de sub /products/
rămân fișiere.
Sitemap și robots. /sitemap.xml e construit de backend din ce e publicat
și expus de nginx la adresa cerută de crawlere. robots.txt e generat, ca linia
Sitemap: să poarte hostul care l-a servit; doar hosturile de producție rămân
deschise crawlerelor, fiindcă stiva de develop servea același catalog pe alt
domeniu.
Curățenie de repo. Cele 41 de fișiere de mediu local scoase pe develop
(e985838) ies și de pe main, ca cele două ramuri să nu mai difere prin ele.
Bug reparat pe drum
Cardul cadou din grila magazinului trimitea la /product/gift-card, un handle
care nu există în catalog — pe producție API-ul răspunde 404 pe el. Toate
linkurile interne trec pe forma canonică /products/<handle>, iar acolo ruta
duce la pagina de carduri cadou.
Verificări
- 134 de teste frontend și 381 backend, verzi pe ramura asta; ambele typecheck-uri curate.
- Build-ul imaginii rulează acum
nginx -t, deci o configurație stricată pică în CI, nu pe server. - Probat pe dev, după deploy:
/sitemap.xml→ 200application/xmlcu 128 de url-uri pe hostul corect;robots.txtcu politica per host; 8 aliasuri → 301 (inclusiv cu query string păstrat); 3 căi inexistente → 404; fișierele reale de sub/products/→ 200; meta corecte în browser pe o pagină de produs. - Un test nou pică dacă rutele din
App.tsxși harta dinnginx.confse despart.
După merge
Pipeline-ul PORNEȘTE singur: .gitlab-ci.yml nu e în diff, deci regula care
sare pipeline-ul nu se aplică. deploy:production nu e manual, deci merge-ul
duce direct în producție.
Nimic de apăsat după: nu se schimbă date în bază, deci seed:live nu e necesar,
iar PUBLIC_SITE_URL e deja setat pe stivă.
Refs #2