Как спрятать ссылки

Как спрятать ссылки

Индекс материала
Как спрятать ссылки
Как спрятать ссылки стр.2
Как спрятать ссылки стр.3
Все страницы

Иногда на страницах сайта требуется спрятать от роботов некоторые ссылки. Нет - речь пойдёт не о клоакинге или чёрном сео, а о нормальной оптимизации сайта. Как известно некоторые движки грешат избыточностью ссылок в своих компонентах и модулях, Взять к примеру ту же Joomla с её индексом материала, прибавьте к нему постраничную навигацию - в итоге получаем дублированные ссылки на странице - оно вам надо?

Кстати, если вам лень читать статью, или попросту нет времени вникать во всё это, то здесь Я разместил этот скрипт ввиде онлайн инструмента.

Так вот. Роботы пока не научились интерпретировать JavaScript, но по слухам вполне ничего себе так заглядывают в его код. Поэтому конструкции типа:

document.write('<a href="/somedomain.net">ля-ля-тополя...</a>');

похоже прокатывают уже через раз. Народ придумал шифровать ссылки в формат кодовых точек unicode, ну типа того: \u003c\u0061\u0020\u0063 есть онлайн сервисы для подобных операций, но что делать если выводимые ссылки формируются движком динамически? Что - что... читать-понимать принцип кодирования многобайтных кодировок в unicode. Что такое unicode и ASCII спросите у google он должен знатьЕсли у вас сайт в модной нынче кодировке UTF-8 а расширения типа mb_string и iconv вам не доступны (бывает и такое) или просто интересно, как это можно сделать самому, то читайте дальше.

Итак. В unicode существуют так называемые "кодовые точки", которые имеют вид: U+007F или U+0400. После префикса U+ следует шестнадцатиричное число ( предварённое нулями ). Фактически это порядковое шестнадцатиричное число позиции символа: U+006B это 6B в шестнадцатиричной, или 107 в десятичной системе или маленькая латинская буква "k" в соответствии с ASCII.

В диапазоне от U+0000 до U+007F ( это интервал от 0 до 127 в десятичном представлении) число после "U+" совпадает с шестнадцатиричным кодом символа в ASCII. Это диапазон латиницы и других печатных/не печатных символов (типа пробела и пр.) то есть символов для хранения и обработки которых требуется 1 байт. После U+007F - кодовые точки unicode следуют далее по порядку, а вот нормальное их шестнадцатиричное представление символов там уже требует 2 байта, т.е. 4 - шестнадцатиричных цыфры: U+0080 соответствует С2 80 (какой то непечатный символ).

Принцип кодирования многобайтных символов следующий:

Unicode (шестнадцатиричный) Unicode ( двоичный )
0x0000 – 0x007F 0xxxxxxx
0x0080 – 0x07FF 110xxxxx 10xxxxxx
0x0800 – 0xFFFF 1110xxxx 10xxxxxx 10xxxxxx

Вы всё еще здесь? Теперь интересное. В таблице видно что для однобайтного символа двоичное представление начинается с 0, а вот для многобайтного с 1. Причем количество единичек в первом байте (ещё его называют стартовым байтом многобайтовой последовательности ) прямо указывает на количество байт нужных для кодировки данного символа. Далее идут серийные байты которые начинаются с 10, и количество которых определено в стартовом байте. Ну а биты символа unicode упаковываются в "транспортные" биты стартового и серийных байтов, обозначенных выше как "xxxx"



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 101 гостей онлайн