Ndërkombëtare
Strategjia e URL-ve ndërkombëtare
Si ndahen gjuhët në URL — nëndosje, nëndomain apo domain kombëtar; mjeti e hamendëson nga shtegu.
Çfarë është
Kur një sajt ka disa gjuhë ose rajone, ato duhet të ndahen në URL. Ka tri strategji të zakonshme.
Nëndosja: shembull.com/sq/, shembull.com/en/. Më e thjeshta për t'u mbajtur, gjithë autoriteti mbetet te një domain.
Nëndomaini: sq.shembull.com. Ndarje më e qartë teknike, por autoriteti ndahet.
Domaini kombëtar: shembull.al, shembull.de. Sinjali më i fortë gjeografik, por kosto dhe punë e trefishtë — dhe secili domain nis nga zero.
Një e katërt, parametrat e pyetjes (?lang=sq), nuk rekomandohet: ajo është e brishtë dhe e vështirë për t'u indeksuar.
Pse ka rëndësi
Zgjedhja ka pasoja afatgjata dhe është e vështirë të ndryshohet më vonë; çdo ndryshim kërkon ridrejtime masive dhe humbje të përkohshme trafiku.
Për shumicën e sajteve, nëndosja është zgjedhja e drejtë: gjithë lidhjet që merr sajti ndihmojnë çdo gjuhë, dhe mirëmbajtja është një server, një certifikatë, një konfigurim.
Domaini kombëtar ka kuptim vetëm kur ka vërtet operacione të ndara për vend — ekipe të ndryshme, çmime të ndryshme, entitete ligjore të ndryshme.
Gabimi më i shpeshtë nuk është zgjedhja e strategjisë por mungesa e saj: e njëjta URL shërben gjuhë të ndryshme sipas IP-së ose sipas kokës së shfletuesit. Atëherë motori indekson vetëm një version — atë që sheh nga vendi ku ndodhet — dhe të tjerët nuk ekzistojnë për kërkimin.
Si rregullohet
https://shembull.com/sq/produkti ← nëndosje: e rekomanduar
https://sq.shembull.com/produkti ← nëndomain
https://shembull.al/produkti ← domain kombëtarHapat:
- Zgjidh një strategji dhe mbaje. Përzierja e tyre është më keq se cilado prej tyre.
- Kurrë mos e ndrysho gjuhën pa ndryshuar URL-në. Çdo version duhet të ketë adresën e vet të qëndrueshme.
- Mos ridrejto automatikisht sipas IP-së. Ofro një sugjerim që përdoruesi mund ta refuzojë.
- Shto hreflang midis versioneve sapo ndarja të ekzistojë.
- Mos përkthe vetëm menunë. Një faqe me menu shqip dhe përmbajtje angleze nuk është version shqip.
Si e mat ky mjet
InternationalSeoAnalyzer::analyzeUrlStructure() (services/InternationalSeoAnalyzer.php:177) e ndan URL-në dhe zbaton tri shprehje të rregullta: një kod gjuhe nga një listë prej trembëdhjetë te shtegu (:182), një domain të nivelit të parë nga një listë prej gjashtëmbëdhjetë (:183), dhe një prefiks gjuhe te hosti (:184).
Strategjia zgjidhet me përparësi: nëndosje, pastaj nëndomain, pastaj domain kombëtar, përndryshe none (:186–189).
Çfarë NUK e mat
Rezultati nuk prodhon asnjë konstatim — ai ruhet vetëm te të dhënat e raportit. Asnjë strategji nuk vlerësohet si e mirë apo e keqe.
Listat janë të ngurta dhe nuk e përfshijnë shqipen: modeli i nëndosjes njeh vetëm trembëdhjetë kode (en, fr, de, es, it, pt, nl, pl, ru, ja, ko, zh, ar), prandaj një URL si `shembull.com/sq/produkti` nuk njihet si nëndosje gjuhe. E njëjta vlen për domainin .al dhe .xk, që nuk janë në listën e domaineve kombëtare.
Kontrolli i nëndomainit njeh vetëm pesë prefikse (en, fr, de, es, it).
Dhe ekziston një defekt i matur që e bën rezultatin e pabesueshëm: te thirrja e këtij analizuesi nga orkestruesi (services/SeoAnalyzer.php:95), argumenti i URL-së merr tekstin HTML në vend të adresës. Matur mbi një faqe pa asnjë kod gjuhe në URL, mjeti raportoi strategjinë subdirectory dhe has_lang_in_url = true — të dyja të pavërteta. Detajet te MASTER_PLAN/audits/61-ANALIZUESIT-INVENTAR.md §4.2.
Mospërputhje midis tekstit të analizuesit dhe matjes
| Teksti i analizuesit | Çfarë ndodh | Si u mat | Burimi |
|---|---|---|---|
| strategy: subdirectory · has_lang_in_url: true | Argumenti i pestë shpërfillet nga PHP-ja pa paralajmërim; parse_url zbatohet mbi tekstin HTML. | Mbi një URL pa asnjë kod gjuhe, dalja ishte 'subdirectory' dhe has_lang_in_url=true — të dyja të pavërteta. — MASTER_PLAN/audits/61-ANALIZUESIT-INVENTAR.md §4.2 | services/SeoAnalyzer.php:95 |
| strategy: none | Modeli i nëndosjes njeh trembëdhjetë kode gjuhe, asnjëri 'sq'. Lista e domaineve kombëtare nuk përmban .al dhe .xk. | Shprehjet e rregullta te :182 dhe :183. — matur gjatë 5.10 | services/InternationalSeoAnalyzer.php:182 |
Kodi që e kryen matjen
services/InternationalSeoAnalyzer.php:177— InternationalSeoAnalyzer::analyzeUrlStructureservices/SeoAnalyzer.php:95— InternationalSeoAnalyzer