Datele structurate nu mai trimit Google la imagini inexistente
Blocul JSON-LD Product numea poza ca ${origin}${prefix}${cale}, deci o pagină de produs în engleză sau rusă anunța https://hyperice.md/en/products/shop/hypervolt-3.png. nginx nu are niciun director /en: adresa dă 404, Google nu construiește rezultat îmbogățit de produs fără o imagine pe care o poate lua, și două limbi din trei își pierdeau cardul de produs din căutare.
Ce s-a schimbat
Un singur helper făcea două treburi. absolute a devenit pageUrl și fileUrl — redenumit, nu completat cu un al doilea helper, pentru că absolute(product.image) se citește ca fiind corect, și exact așa a intrat greșeala.
Auditul tuturor apariţiilor, cerut de issue:
| Linie | Apel | Fel | Decizie |
|---|---|---|---|
| 213 |
pageUrl(canonicalPath) — produs, alimentează offers.url și ultima firimitură |
adresă de pagină | păstrează prefixul |
| 229 | fileUrl(product.image) |
cale de fișier | prefix scos — defectul raportat |
| 264 |
pageUrl(canonicalPath) — colecție |
adresă de pagină | păstrează prefixul |
| 302, 303 |
pageUrl(...) — index blog și articol |
adresă de pagină | păstrează prefixul |
prefix nu mai apare nicăieri altundeva în backend/src unde s-ar putea confunda cele două înțelesuri. og:image din render-page.ts:138 era deja corect în toate trei limbile — verificat, lăsat în pace. Sitemap-ul emite doar adrese de pagini; e-mailurile de comandă nu folosesc prefix.
Un al doilea defect, din același audit, inclus aici
pageUrl trece acum prin localizePath în loc să lipească prefixul, deci coincide octet cu octet cu canonicul pe care randarea îl scrie din același helper. Asta repară și prima firimitură, care avea ${origin}/ fix în cod: pe /en/products/hypervolt-3 traseul pornea de pe homepage-ul românesc. Verificat pe live înainte de fix.
Lipirea prefixului ar fi dat /en/, iar canonicul e /en — de aceea trece prin localizePath, nu prin concatenare.
Verificat
Cel mai tare dintre testele noi rezolvă fiecare adresă de imagine din JSON-LD pe disc, în frontend/public, în toate trei limbile — un test care verifică doar coada adresei ar trece și cu prefixul lipit.
Ambele teste au fost verificate că pot cădea: re-lipind prefixul, 4 teste devin roșii; punând înapoi ${origin}/ la firimitura rădăcină, cad exact cele două limbi cu prefix, iar româna rămâne verde.
Backend: build curat, 489 de teste în 31 de fișiere (erau 471).
Găsit pe parcurs
assetPath acceptă o adresă absolută http(s):// ca imagine de produs, iar amândouă locurile care construiesc adresa finală ar lipi originul în față. Nu e viu — zero produse din 31 pe producție — deci issue propriu: #40 (closed).
Part of #31 (closed)