Работя върху уебсайт, който има различно съдържание в зависимост от провинцията / държавата, от която е потребителят.

Валидно ли е да добавите кода на подразделението към hreflang като по-долу?

<link rel='alternate' hreflang='en-ca-ab' href='https://www.example.com/ca/ab/example/'/> 

Ако не, има ли друг начин да уведомите търсачките, че съдържанието е специфично за определена провинция / държава?

  • 1 Форматът hreflang не позволява подрегиони за съжаление support.google.com/webmasters/answer/…
  • Знаете ли дали има алтернатива, която може да се използва?
  • 1 @jrtapsell Не мисля, че връзката на Google дава реалната дефиниция на езиков маркер, а просто дава опростената версия, когато имате само език и регион по избор. Но езиковият маркер според BCP47 е много по-сложен.

Накратко, не. Разделът „Поддържани езикови / регионални кодове“ от насоките на hreflang на Google е доста еднозначен:

Стойността на атрибута hreflang идентифицира езика (във формат ISO 639-1) и по желание региона (във формат ISO 3166-1 Alpha 2) на алтернативен URL адрес.

Използването на думата „регион“ там може би е объркващо. Кодовете ISO 3166-1 Alpha 2 означават държави1.

Това, което вероятно искате да направите, е известно като локално SEO, което разчита повече на оптимизации на съдържание и извън сайта, за да насочва заявките за търсене с локално намерение. Това е извън обхвата на въпроса ви, за да покриете това тук.


1 За да бъдем наистина педантични, дори това е семантично обезпокоително. Например съставните страни на Обединеното кралство нямат свои собствени кодове, въпреки че са държави (не щати или провинции).

Спецификацията HTML5 определя hreflang като този:

Атрибутът hreflang за елементи, които създават хипервръзки, ако има такива, дава езика на свързания ресурс. Това е чисто препоръчително. Стойността трябва да е валиден BCP 47 езиков маркер. [BCP47] Потребителските агенти не трябва да считат този атрибут за достоверен - при извличане на ресурса потребителските агенти трябва да използват само езикова информация, свързана с ресурса, за да определят неговия език, а не метаданни, включени във връзката към ресурса.

(вижте https://www.w3.org/TR/html5/links.html#attr-hyperlink-hreflang)

BCP47 е документ на IETF „Етикети за идентифициране на езици“. Той описва подробно как се формира езиков маркер и възможното му съдържание.

Синтаксичният анализ е основно language[-script][-region]*('-' variant)*('-' extension):

  1. първата част е езикът, както е дефиниран в кодовете ISO 639-1 Alpha-2, така че en от вашия случай, с незадължителни разширени езикови подтитри,
  2. скриптът е 4 знака, така че не е вашият случай тук (не е задължителен),
  3. регионът е от ISO 3166-1, кодове на държави, и затова се предпочита да е с главни букви, следователно CA,
  4. вариантните подмрежи се дефинират като използва се за обозначаване на допълнителни, добре разпознати вариации, които определят език или неговите диалекти, които не са обхванати от други налични подмаркировки. но те са най-малко 4 знака (вж. точка 4 от 2.2.5)

Така en-ca-ab не ми се струва валидно. Кодът на ISO 3166-2 за Алберта в Канада е "CA-AB", но не можете да го използвате като вариант, както е (поради тирето му и защото всеки вариант е регистриран в регистър).

Всъщност, ако въведете низа си на http://unicode.org/cldr/utility/languageid.jsp, ще видите, че е означен като невалиден. Също така не виждам регистрация за „Алберта“ в https://www.iana.org/ assignments/language-subtag-registry/language-subtag-registry

Накратко, наистина ли мислите / трябва да определите английския канадски език, както се говори в Алберта, защото той е толкова различен от английския канадски, което би било валидно en-CA езиков маркер?

Не забравяйте, че идентифицирате език, а не география. Ако искате да посочите, че част от уебсайта ви е свързана само с тази конкретна провинция (например ако предоставяте услуги само там), това не е езиков проблем и следователно не трябва да има нищо общо с hreflang.

  • Според Google (който е въвел атрибута hreflang) целта на маркера hreflang е "за страници, специфични за езика или региона". Така че мисля, че това е нещо повече от език, но и малки разлики в съдържанието.
  • 2 @BradThiessen регионът е там, за да обозначи език, който се говори в определен регион, той не се използва за определяне на региона като географска област, а само като език. Ето защо атрибутът се нарича hreflang а не hrefгео Или нещо такова.

По отношение на hreflang не можете да посочите съдържанието си по-подробно, както при схемата на език и държава.

Силно препоръчвам обаче да се използват структурирани данни, специално https://schema.org/audience и https://schema.org/spatialCoverage. И с двете свойства можете да комуникирате покрития регион много точно.

Въпросът, който остава за мен без отговор, е: как технически доставяте различно съдържание в различни региони? IP-базиран? Работи ли достатъчно точно за вас?

  • Ние филтрираме IP само в зависимост от държавата и след това даваме на потребителя опции за избор според региона. По-голямата част от потребителите обаче посещават специфични за този регион връзки директно от Google / Bing, така че би било хубаво търсачките да показват правилната връзка въз основа на провинцията / държавата на потребителя. Все пак ще разгледам структурираните данни. Благодаря за това!
  • @BradThiessen не мога да препоръчам достатъчно често да използвам схема за управление, предлагана от Google, за насочване на потребителите към съдържанието на техния регион: идва потребител на новини → питате за неговия регион → отговори на потребителите → задавате бисквитка с избрания регион. При следващо посещение → потребителят отива към съдържанието на региона, което е избрал преди това и е запазил с бисквитка. Няма автоматично пренасочване без ръчен избор на потребител и запазване на бисквитка с неговия избор! В случай на автоматично пренасочване без бисквитки рискувате Google да класира предимно региона с най-много пренасочвания.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?