URL адреси на кирилица
Формати:
Фактор ли са адресите на кирилица за SEO? Как правилно да ги кодираме и линкваме? На къде да сочи canonical релацията при такъв URL? Да пренасочим ли варианта с големи букви към варианта с малки?
Транскрипция
Здравейте! Аз съм Васил Тошков от Cloxy, а темата днес са адресите на кирилица. Първо - защо ни се налага да използваме адреси на кирилица? Мисля, че вече е ясно, правихме и експерименти. Те са фактор за SEO. Освен че са фактор за SEO, в някои случаи са много лесни за използване. Примерно, при блог платформи, форум платформи, социални мрежи - изобщо всички сайтове в Web 2.0 ни се иска потребителят просто да пише едно заглавие, описание и да публикува.
При такъв вариант адресът на съответния пост може да е в 2 варианта - или да е на кирилица, т.е. да пренапишем заглавието с малки букви и да го направим на кирилица с тирета, вместо разделители, или да е някакво ID, което не изглежда сериозно и нищо не говори на потребителя, а и на търсачките, когато потребителите виждат резултата в търсачките.
Понякога ни се налага да работим с адреси на кирилица искаме не искаме. В това видео искам да засегна някои проблеми, които често се срещат при адресите на кирилица и поне според мен как са техните решения. За съжаление няма някакви утвърдени стандарти и ще видите малко по-късно, че не се работи толкова лесно, не е толкова лесно да се каже така е правилно да се прави, така не е правилно.
Всяко нещо е относително, спрямо случая, с който се работи. Първото нещо, което трябва да отбележим при адресите на кирилица, е че реално в HTTP протокола няма такова нещо, като адреси на кирилица. Спрямо HTTP протокола за URL и URI адреси, адресът съдържа малки и главни букви от A-Z, числа и някои специални знаци, като някои от тях са запазени, други - не. Всички останали символи се кодират по този начин, като в тях влиза кирилицата, т.е. всички специални знаци.
В случая ще разгледаме случая /аб/. Реално погледнато той в същност представлява следното нещо, кодирано шестнадесетично. Всеки един байт се кодира, тъй като кирилицата се кодира в случая с Уникод и всяка една буква се кодира с 2 байта, и има по две двойки шестнадесетични числа, които въпреки че са букви, в същност представят числа, които помагат на системите и по този начин се комуникира с адресите на кирилица.
Принципно всяка една функция в PHP, в Java Script, в PHP urlencode() или rawurlencode(). В Java Script се нарича encodeURIComponent() и т.н. При кодиране на този адрес в същност ни връща този адрес, който е с големите букви. Моят съвет е в URL адресите да няма никакви големи букви. Това не е закон, не е практика, но е моят съвет.
При адресите на кирилица, както виждате, има големи букви. Моят съвет е винаги да ги приравнявате към малки букви. Когато съхранявате URL адреса във вашата система, независимо как го съхранявате и как правите структурата, винаги правете така, че всички адреси да са с малки букви. Това е една добра практика, да няма никакви адреси с големи букви.
Не пречи със strtolower() под PHP или в зависимост от езика, който използвате, да си ги направите малки и по този начин да работите с тях. Както и всеки един URL адрес. Това означава, че реално каноничният ни адрес, ако имаме някакъв сайт /аб/, каноничният ни адрес ще е, както аз препоръчвам, адресът, наклонена и ако е на кирилица - с малки букви, ако е на латиница - там е съвсем друг въпрос, нямаме никакъв проблем.
Това ни е каноничният адрес. Не зависимо, че потребителят може да отвори адреса с големи букви и просто да го въведе така. Всъщност адресът ни представлява това. За това съм го подчертал. За мен това е най-правилния вариант. Освен, че натам трябва да сочи canonical-ът, по този начин трябва и да линкваме навсякъде.
Много често се задава тази тема в Интернет. Как да линкваме адресите на кирилица? Дали да ги линкваме в оригиналния им вариант или чрез кодирания вариант? Моят съвет е - чрез кодирания вариант. Тъй като, както казах, в HTTP протокола няма такова нещо, като адрес на кирилица. И правилният вариант е кодираният.
Да, ако го направите с варианта на кирилица, Google ще го разпознае. Този проблем им е ясен. Дори canonical-а да сочи към варианта с кирилица, отново всичко работи, но проблемът е, че всички останали системи не могат да се оправят, ако адресите ви сочат към некодирания вариант.
Примерно търсачката Bing изпада в ужас, като види подобно нещо в a href и започва да цикли и накрая се отказва. Тъй като аз съм се опитвал да правя такива ботове , който обхождат Интернет, всички стандартни инструменти, дори и най-елементарният - примерно wget под Linux командата няма да се справи с такова нещо или последно, когато съм пробвал, не се е справяла и всичко се зацикля и реално погледнато това са най-големите проблеми - адресите.
Всички останали системи ще имат проблеми, дори и някои популярни SEO инструменти, когато анализират целия сайт, казват не мога да прочетат такъв адрес. Винаги използвайте кодирания вариант, може дори и с големи букви. Спрямо HTTP протокола тези неща са едно и също.
Така е написано в протокола, независимо как ще го напишем трябва да представя едно и също нещо, което също е проблем. Тази липса на стандарт създава проблема, че реално това не са едни и същи адреси. Аз мога да направя на тези два адреса да се отварят различни неща, въпреки че те изглеждат едни и същи. Така че го имайте предвид. Моят съвет е вариант с малки букви и canonical към него.
Преди една година Google тези два варианта ги възприемаше като два различни адреса, даже в Webmaster Tools се ревеше, че има дублирано съдържание между различни адреси. Това, което направих и моя съвет тогава беше да се редиректва варианта с големи букви към варианта с малки букви. Тъй като това е най-естественото нещо.
Примерно, ако на адрес на кирилица напише някой /аб/ с големи букви, напълно нормално е да редиректне с малки, както браузърите редиректват, ако напишеш домейна с големи букви. Това е една добра практика, по която върви целия Интернет. Проблемът е, че ако Google редиректне при кирилица варианта с големи букви към варианта с малки, а то реално се редиректва.
Проблемът е, че Google изпада в цикъл. Когато му кажеш да пренасочи към варианта с малки букви, той се опитва да зареди варианта с малки, но всъщност се опитва да зареди варианта с големи и се задълбава и не може да индексира адресите на кирилица. Този проблем със сигурност го нямаше до преди няколко месеца или година.
Тогава го тествахме и работеше, вижте нещата се променят. В момента прави проблем и временно аз съм спрял, лично при моите проекти, пренасочването от големи към малки букви като цяло и разчитам само на canonical, но се надявам, а и между другото съм писал репорт, ако някой го прочете, да го оправят това нещо и тъй като правилния вариант, според мен е да се редиректва.
То е много по-естествено. Аз съм казал, че canonical трябва да се използва само в два случая - когато работим с параметри и с SSL сертификати. За всички останали случаи принципно перфектният вариант е 301 пренасочване. В случая има изключение, което се надявам да оправят един ден.
Имайте предвид, че както Google, Bing и други търсачки по подразбиране винаги отварят адреса с големи букви, може би, защото така е написано в HTTP протокола, че е едно и също и очакват от нас да е едно и също. Липсата на стандарти е голям проблем.
Подобно нещо се случва и при браузърите. При всички браузъри, дори да сме заредили варианта с малки букви, при копиране от адрес от адрес бара, ни го копира във временната памет на компютъра или като кирилица, което е тенденция да става така (Opera, Firefox). Проблемът е, че, ако не е на кирилица ни го копира с големи букви, въпреки че сме заредили варианта с малки.
Имайте това предвид. Потребителите, когато копират отново и да искат да ви линкват, пак ще ви линкват към варианта с големи букви. Този проблем трябва да се реши. Най-добре с canonical. WordPress са го решили по този начин и аз много го харесвам, въпреки че не харесвам като цяло системата. Решението им е перфектно.
Винаги използват варианта с малки букви, като canonical, като линкване и навсякъде. Ако някой отвори варианта с големи букви, пак разчитат на canonical да насочва към варианта с малки. Не пренасочват и може би са видели проблемите с Google и другите търсачки.
Нещо, което искам накрая да отбележа като друг проблем и то много голям при адресите на кирилица - това е, че дори всичко да е перфектно и ние да редиректваме от варианта с големи букви към варианта с малки, при кирилицата няма как да редиректнем самата кирилица варианта с големи към варианта с малки. Какво имам предвид?
Ако тук напишем голямо АБ, то кодът на това нещо, кодирано ще е съвсем различен. Голямото А ще се кодира с два байта, съвсем различни от малкото а. Това е един проблем, който, ако трябва да решим, трябва да правим някакви хеш таблици, в които да търсим голямата буква и ако я намерим да пренаписва адреса към малката. Не, че не е възможно, но просто искам да го отбележа като проблем.
Не може просто да редиректнеш големите букви към малките и да ги редиректнеш по този начин. Различно е кодирането. Това е за днес. Най-важното, което трябва да се запомни и като съвет е да използвате този вариант - кодирания и то с малки букви. Всичко останало като се отвори трябва да сочи като canonical към него.
Това е за днес. Надявам се да е било полезно. До следващия път! Чао за сега!