Datele structurate trimit Google la imagini inexistente pe /en și /ru
Pe fiecare pagină de produs în engleză și în rusă, blocul de date structurate
Product trimite Google la o adresă de imagine care nu există. Prefixul de limbă
al paginii se lipește pe calea fișierului static, iar fișierul nu e acolo. Google
cere o imagine validă pentru rezultatul îmbogățit de produs; cu o adresă care dă
404, rezultatul nu se poate forma, deci două limbi din trei pierd cardul de
produs din căutare — exact ce s-a construit la etapa 5 din #2.
Ce am găsit
Măsurat pe producție, aceeași pagină în cele trei limbi:
/products/hypervolt-3 "image": ["https://hyperice.md/products/shop/hypervolt-3.png"]
/en/products/hypervolt-3 "image": ["https://hyperice.md/en/products/shop/hypervolt-3.png"]
/ru/products/hypervolt-3 "image": ["https://hyperice.md/ru/products/shop/hypervolt-3.png"]
curl -o /dev/null -w '%{http_code}' https://hyperice.md/en/products/shop/hypervolt-3.png
404
Cauza, în backend/src/services/page-meta.ts: helperul absolute construiește
adresa ca ${origin}${prefixDeLimbă}${cale}. E corect pentru adrese de pagini —
canonicul, url-ul din JSON-LD, firimiturile — pentru că acolo prefixul chiar
face parte din adresă. Nu e corect pentru o cale de fișier static: /products/shop/…
e servit de nginx de pe disc, unde nu există niciun /en.
Apariția e la linia 214, images: [absolute(product.image)].
Nu afectează og:image — acela se construiește în render-page.ts, pe alt drum,
și e corect în toate trei limbile (verificat).
De făcut
-
Separă cele două înțelesuri: o adresă de pagină primește prefixul de limbă, o cale de fișier nu. Cel mai curat e un al doilea helper lângă absolute, cu nume care spune diferența, nu un parametru boolean. -
Verifică toate aparițiile lui absolutedinpage-meta.tsși decide pentru fiecare care dintre cele două e — sunt și adrese de pagini printre ele, care trebuie să rămână cum sunt. -
Test care prinde regresia: pentru fiecare din cele trei limbi, fiecare adresă de imagine din JSON-LD trebuie să răspundă pe disc. Un test care verifică doar coada adresei ar trece și cu prefixul lipit.
Criteriu de acceptare
- Pe cele trei versiuni ale aceleiași pagini de produs,
imagedin JSON-LD e aceeași adresă, fără prefix de limbă. -
curl -o /dev/null -w '%{http_code}'pe fiecare adresă de imagine din JSON-LD, luată de pe o pagină/enși una/ru, întoarce 200. - Rich Results Test pe o pagină de produs în engleză nu mai raportează imagine inaccesibilă.