SeoHide плагин WodPress для скрытия он индексации исходящих ссылок с сайта.

Пост будет больше о SEO сразу предупреждаю.
И так, seohide или  seo hide (не знаю как правильней) так во это такая штука которая, либо превращает ссылки на страницах сайта либо в якоря/заглушки, либо просто добавляет функциональность тега инициализации перехода по ссылке html тегам вовсе для этого не предназначенным. Первый вариант здесь мне нравится больше. Реализаций существует насколько, некоторые из них достаточно кривы и неудобны, но есть и вполне пригодные варианты некоторые источники даже называют все это технологией. Я же пошел дальше и написал плагин WordPress использующий реализацию seohide, об этом в конце статьи. О SEOhide даже можно посмотреть видео: http://www.youtube.com/watch?v=ULUajs3bgN8 Ноя вместо я просто покажу как оно работает:

  1. Итак в продвинутом варианте реализации предполагается что у нас есть html тег который несет в себе информацию о странице на которую скрыто ссылается
  2. Та самая информация внутри тега расположена в неявном виде, а закодирована каким либо обратимым алгоритмом дабы максимально скрыть от поисковых систем детали задуманного обычно это base64 .
  3. Добавляем javascript дабы обработать клик по тегу и инициализировать переход браузера по url.

Исходя из вышеописанного имеем вот такой html код:

 <a href="#" data-sh="aHR0cDovL2Fsa293ZWIucnUK">ссылкиа alkoweb.ru</a>

тут: data-sh — атрибут для хранения параметров, на поведение тега либо его внешний вид, он не влияет и лучше всего подходит для наших целей  ( подробнее об атрибутах data* ) aHR0cDovL2Fsa293ZWIucnUK  -значение атрибута data-sh не что иное как url моего блога https://alkoweb.ru/ закодированный алгоритмом base64.

href="#"

Просто заглушка так как такой вариант мне нравится больше всего и часто применяется для элементов навигации. Соответственно  Javascript будет выглядеть следующим образом


$('[data-sh]').click(function (e) {
e.preventDefault();
document.location.href =  decode_base64($(this).attr('data-sh'));
});

Что тут происходит, при клике по любому html тегу с атрибутом data-sh будет отменено, любое действие браузера, (что бы исключить прокрутки страницы при клике), далее берется значение этого атрибута и декодируется функцией decode_base64 (Здесь описывать её я не стал так хочу объяснить кратко принцип работы) далее по средствам объекта document.location.href, инициализируется переход по ссылке восстановленной из base64 строки.

Теперь о том зачем это нужно может быть целей две

1) закрыть от поисковых систем ссылки на  внешние сайты дабы не отдавать какого либо веса внешним сайтам и заодно исключить ссылки на нежелательный контент с вашего сайта. Но при этом не ухудшить функциональность и удобство вашего сайта. 2) Распределение веса путем срытия от индексации внутренних ссылок сайта либо какой то их части. Зачем это было нужно мне? Причин опять же несколько: Я не хочу чтобы  страницы мой сайт отдавали свой вес уже более авторитетным ресурсам, так как при написании статей я всегда вставляю ссылки только на очень авторитетные сайты и я не готов держать в голове оптимальное количество follow и  dofollow ссылок для каждой статьи  моего блога, и  следить не стал ли материал на который ссылается мой блог вдруг плохим в глазах одного из поисковиков

О плагине

На такие жертвы я пока идти не готов, поэтому я написал небольшой WordPress плагин (plugin) SEOhiden для всех внешних ссылок, находящихся в контенте поста. Плагин я опубликовал в репозитории WordPress, но на данный момент он еще стоит в очереди на ревью модератором, что может занять не мало времени  в последствии  его можно будет скачать из каталога WordPress , а сейчас я выложил его на Github https://github.com/petrozavodsky/seo_hide. Далее я так же планирую развить эту тему и добавить возможность срытия внутренних ссылок ,  открытие внешних ссылок в тексте постов, а так же поддержку срытия/показа ссылок меню с зависимостями от url по которому оно находится. Но это в следующих релизах, следите за релизами. Существует несколько принципиальных отличий SEOhide от обычного клоакинга , и всех остальных черных методов SEO не позволяющих по крайней мере на данных момент поисковым системам, не эффективно его обнаружить не наказать за его использование. Описанное выше все же может вызывать справедливые опасения по поводу последствий применения метода, скажу что сам  ставил несколько экспериментов на нескольких абсолютно разных сайтах продвигаемых разными способами скрывал часть внутренних и внешних ссылок этим способом и до сегодняшнего не один из этих сайтов не попал под санкции ни одного из поисковиков.

UDP: А вот уже и в репозиторий добавили https://wordpress.org/plugins/seohide/

54 Комментариев

  1. Добрый день,

    спасибо за плагин! Очень нужный и полезный!

    Жаль, он у меня не работает на WP 4.2.2. в режиме мульти-сайт.

    Вы не сталкивались с такой проблемой? В чем может быть дело?

    • Честно говоря код не помню , но должно работать и в мультисайтовой установке , иначе бы в каталог плагинов скорее всего не пропустили бы, но потестирую , отпишусь здесь , может вторую версию выпущу раз уж он кому-то полезен

    • Починил это безобразие , видимо опечатался во время коммита, обновиться можно с гитхаба https://github.com/petrozavodsky/seo_hide в каталоге плагинов тоже обновления скоро выкачу , через пол часика где то. Спасибо за фидбек

  2. Огромное спасибо за обновление! Теперь все работает!

    Думаю плагин полезен многим, просто про него пока мало кто знает… Раньше прятал ссылки руками через редиректы — так намного удобнее.

  3. Правда, тут может быть следующая проблема: ведь когда резко закрываются исходящие ссылки, это тоже может показаться подозрительным для поисковиков. Необходимо очень аккуратно закрывать исходящие. А то будет странно, что сайт советовал ~ 100-200 ресурсов, а через день уже резко 0.

    • Ну думаю это осознает человек который будет включать плагин, хотя не плохая идея для следующих версий дать возможность скрывать ссылки выборочно и по частям

  4. Полезный плагин. Встречал на многих блогах что внешние ссылки открываются как внутренние на блоге. очень тогда понравилась идея. Потестирую этот

  5. Спасибо за плагин. Получилась проблема. Ссылки на партнёрские программы с сайта раньше скрывал через NoExternalLinks, но с появлением вашего плагина единственная функция в NoExternalLinks мне нужна осталась — это открытие внешних ссылок в новом окне target=»blank». Но Ваш плагин делает их внутренними и NoExternalLinks их не открывает теперь в новом окне. Я так понимаю надо в коде что-то подправить, либо ввести какую-то настройку в плагине, для этой функции.

  6. Извините за беспокойство. Я не кодер, но методом тыка подправил вручную плагин. В моём конкретном случае, он заработал так как мне и надо) Спасибо!)

    • Сделал версию 1.3.0 , можете обновляться , то что вам нужно настраивается здесь /wp-admin/options-reading.php, «открывать внешние ссылки в новом окне» называется

  7. Плагин в принципе умеет обрабатывать target ссылок если вручную указать target=»_blank» то он откроет ссылку в новом окне, вы по всей видимости модифицировали строку $input[0] = str_replace(‘href=’, «href=’#’ data-sh=», $input[0]); что тоже не плохо, я в дальнейшем добавлю страницу настроек , при этом постараюсь не сломать ваш конкретный юзкейс после обновления , давно над этим думал, но руки еще не дошли.

  8. Здравствуйте! Во первых при обновлении плагина через репозиторий вордпресс произошла ошибка, и сайт повис в режиме «не удаётся открыть сайт, возможно ведутся технические работы», ладно, с этим разобрались. Затем удалил папку seohide через ftp — сайт заработал. Скачал папку seohide c другого сайта, где он тоже был установлен, но не обновлен, затем скопировал эту папку на исходный сайт, и далее активировал плагин.
    Вроде бы всё заработало, но нет — плагин теперь работает только в записях, а на «страницах» уже не маскирует ссылки вообще. Подскажите, как исправить проблему, или скиньте пожалуйста установочную версию плагина в архиве zip, чтобы я смог удалить предыдущую, и поставить рабочий вариант. Нужна именно 1.2.0 версия, так как 1.3.0 убила сайт сразу же.

    • Обновление не удалось скорее всего из за того что файл .maintenance в корне сайта создался а после обновления вордпресс удалить его не смог по какой то причине, то есть не сильно с плагином связанная проблема.

      Версия 1.2 есть (тут) , но я бы все таки рекомендовал поставить 1.3 потому что работает так же, и по сравнения с 1.3 ничего не менялось что могло бы сломать все то что вы описываете, есть две версии почему это может произойти 1) шаблоны вашей темы изменился и содержимое страниц теперь выводится не используя фильтр the_content, это плохо и может привести к проблемам и с другими плагинами 2) у вас возможно в адресе сайта в настройках /wp-admin/options-general.php что то особенно интересное вписано, и плагин не умеет это корректно обработать эту ситуацию (хотя это и не объясняет отличия в работе между 1.2 и 1.3), тут срин вашей страницы настроек сильно бы мне помог в дальнейшей разработке

  9. Шаблон тот же что и был, собственно не менялось вообще ничего, кроме обновления самого плагина. До этого точно работал исправно. Вечером скину скрин, если не разберусь сам.

  10. вот такую ошибку мне выдаёт при установке плагина через зип, скачанный с гитхаба (1.3.1 и 1.3.0)
    Fatal error: Call to undefined function d() in /home/host1360986/mydomen.ru/htdocs/www/wp-content/plugins/seo_hide-master/vp-hidden-seo.php on line 67

  11. А версия 1.2 устанавливается, активируется, но маскирует всё, кроме ссылок в «страницах», если это важно, то страницы созданы в visual composer. Теперь уже не могу вспомнить, маскировались ли они первоначально, или нет, но сейчас чётко видно что ссылки остаются обычными.
    Моему сайту очень важно маскировать ссылки, так как работа со множеством партнёрских программ.
    Подскажите, что нужно сделать, чтобы максировка ссылок работала и на «страницах» а не только на записях. Заранее благодарю за ваш удобный плагин.

  12. По всей видимости инициатором обновления был я и у меня тоже после обновления до 1.3 сайт перестал работать. Там у вас с кавычками пошла путаница — надо одинарные, так должно заработать:
    $input[0] = str_replace( ‘href=’, «href=’#’ target=’_blank’ data-sh=», $input[0] );

  13. Владимир, плагин работает, супер!

    Не работает:
    1. рф домены — не редиректит, открывает по клику: about:blank
    2. можно ли что-то придумать и для внутренних ссылок (ссылки в сайд-баре, например, или навигационном меню)

  14. 1. Добавил поддержку кириллических доменов, уже выложил обновление на гитхаб, сейчас добавлю в репозиторий WordPress )) проблему пофиксил, и можно смело обновляться.

    2. Для внутренних ссылок пока ничего нет, только для внешних, но если нужно могу сделать в новых версиях я и об том тоже думал. Так же добавил функцию vp_seo_hide_in_text($text) тут где $text любая строка с html тегами, функция найдет и заменит все внешние ссылки из переданного текста и вернет его . Это на случай если необходимо срыть какие то ссылки в местах отличающихся от контента поста или комментарием, можно использовать в своих темах и плагинах. Думаю так же примерно сделать для внешних ссылок. пока нету ничего подобного.

    Спасибо за фидбек, комменты помогают мне добавлять новые фитчи.

  15. Внутренние ссылки

    У меня конкретная задача — закрывать ссылки в навигации. К счастью, у WP можно прописывать class к навигационным ссылкам меню. Может быть разработать «особый» класс, который будет сообщать скрипту о необходимости закрытия?

    А вторая задача — скрытие в сайдбаре. В принципе, может решаться так же. Попробую вашей новой функцией

  16. сделал приоритет побольше что бы работали шорткоды, для шорткодов с неадекватно большими приоритетами добавил фильтр vp_seo_hide_add_priority использовать можно так

    
    add_filter('vp_seo_hide_add_priority', 'plus_priority');
    
    function plus_priority($var){
    
        $new_priority = 200000000;
        
        if( $var < $new_priority  ){
            return $new_priority;
        }
        
        return $var;
    }
    
    

    это на случай если дефолтного приоритета не хватит, но я думаю должно заработать по дефолту .

    Как обычно новые версии выложил везде можно обновляться.

  17. > возможно такое,да а чем выводится шорткод ? если не секрет, можно пофиксить
    Через Custom Fileds заливается код внешней ссылки. Например, site.ru. Затем он выводится шорткодом в контент зону. Но ссылка не блочится

    Плагины:
    1. https://wordpress.org/plugins/advanced-custom-fields/
    2. https://wordpress.org/plugins/shortcodes-ui/

  18. и при этом через шорткод выводится ? если да то должно уже работать после обновления которое я только что выкатил , если все равно не работает то нужно код который вам это выводит через функцию vp_seo_hide_in_text($text) прогнать, естественно что желательно с function_exist и всеми проверками

  19. Владимир, после обновления перестали ссылки блочится :)
    1. В контент зоне код вывода шорткода + контрольная ссылка: https://yadi.sk/i/Tn_pWJ6BnUWuL. Контрольная ссылка не блочится
    2. Что выводит шорткод: https://yadi.sk/i/tkhfdH93nUXFC

    Я вам еще в форму обратной связи написал, чтобы тут не засорять

    • да нет лучше здесь писать из контактной формы у меня почему то почтовая программа в спам падает, убрать ее вообще нужно, можно в таком случае просто на почту написать petrozavodsky@gmail.com очень странно пришлите ссылку на вашу страничку где не срываются ссылки , а посмотрю , что это такое происходит

  20. 1.Не закрывает ссылки на страницах и произвольных(кастомных) записях.
    2.Закрывает все ссылки на всех записях. Иногда нужно какие то ссылки оставить открытыми(в случае например с продажей ссылок).
    3. При клике правой кнопкой и открыть в новом окне открывает страницу со ссылкой.
    4. Нет настройки вкл-выкл target blank. Иногда она нужна а иногда нет.
    5. Перенести загрузку скрипта в подвал.

    Можете это доработать?

  21. Подскажите, как открыть конкретные ссылки в тексте. Если например, они продажные?

  22. Было бы оооочень полезно. Так как продаются ссылки с бирж и они тоже закрываются автоматом.

  23. Всем привет. Случайно встал вопрос о том как скрыть ссылки. Начал искать в WodPress плагин для скрытия внешних ссылок сайта (не зная вообще есть такие плагины или нет) и нашел seohide Автор: vovasik, petrozavodsky. Решил поискать отзывы. Только вот какая штука отзывов много и все положительные, активных установок написано 200+, но вот оценок ни одной. Встаёт резонный вопрос. Оценки не ставятся чтоб люди сомневались в качестве плагина? Или это просточтоб меньше знало об этом людей? :)

    • Все проще, оценки не ставят большинство пользователей и это нормально, так зачастую происходит. Плюс этот плагин я писал для себя дай бог если 6 в реальности может даже больше. И много активных установок я сам же и сделал, звездочкам в такой ситуации взяться не откуда, не могу же я сам себе оценки ставить

  24. Еще заметил проблему, что если плагин активен не подтягивается title заданный через All In One SEO Pack а вместо title берется h1

  25. Добрый, будут обновления плагина в ближайшее время с добавлением возможности открывать отдельные ссылки?

  26. Обновил плагин теперь некоторые url можно либо включить либо исключить в разделе чтение:

    https://alkoweb.ru/wp-admin/options-reading.php

    Либо добавить ссылкам такой атрибут

    <a href=".." data-seohide="false" rel="nofollow ugc"> link </a>

    и такие ссылки будут открытыми.

  27. Через фильтры можно сделать список хостов ссылки с которых будут открытыми

             add_filter('vp_seo_hide_check_link', function ($val, $url) {
    
                    $allow = [
                        'http://google.com/',
                        'http://www.google.com',
                        'http://yandex.ru'
                    ];
    
                    $allow = array_map(function ($val) {
                        $val = trim($val);
                        return parse_url($val, PHP_URL_HOST);
                    }, $allow);
    
                    if (in_array(parse_url($url, PHP_URL_HOST), $allow)) {
                        return true;
                    }
    
                    return $val;
                }, 20, 2);
    

    пока что только через фильтр в коде пока думаю как это реализовать в интерфейсе админки

  28. Владимир, добрый день!

    Если не секрет, почему вы удалили плагин из репозитория WP?

    Спасибо.

    • Секретов нет. Все детали описывать долго, но если в двух словах. То есть у меня такой плагин https://github.com/petrozavodsky/wp-russia-regions-as-post (который даже не мой) в нем функционал как на скриншоте https://raw.githubusercontent.com/petrozavodsky/wp-russia-regions-as-post/master/screenshot-1.png до прошлого года было все нормально. Но вдруг такое положение дел на wordpress.org перестало устраивать.

      Цензура в репозитории такая что если написать то что модераторам не нравится плагин сразу удаляют, под любым предлогом, правила придумывают на ходу.

      Зато политические, националистические лозунги, сборы донатов на войну или скам под видом сборов на войну все эти вещи с прошлого широко представлены в репозитории. Но надо понимать что цензура зависит от того на войну с кем проводятся с боры, можно только за определенную сторону топить говоря по-простому.

      Я не хочу иметь ничего общего с такими организациями и всячески осуждаю такую свободу слова как на wordpress.org сейчас,
      но мой аккаунт снесли модераторы по факту за то что я писал слишком много писем насчет их таких правил размещения в каталоге.

      А как я вышел описал, докопаться можно скоре всего до любого автора или плагина.

      Но зато теперь меня с этой помойкой ничего не связывает, и на счет свободы слова и других ценностей тоже вопрос закрыли.

      Если нужен плагин то он кажется всё еще актуален и есть тут https://github.com/petrozavodsky/seo_hide

    • Но кроме этого поисковики за 10 лет существования этого плагина вроде бы научились работать с яваскриптом. И теперь нужно тестировать на сколько такой подход помогат1ь маскировать ссылки, возможно не так эффективно как раньше, но я лично не проверял.

  29. Владимир, добрый день!

    Подскажите пожалуйста.

    У меня блог стоит по адресу blog.domain.ru и я хочу скрывать ссылки c блога на download.domain.ru и некоторые другие поддомены. По умолчанию плагин не закрывает эти ссылки.

    Пробовал добавить download.domain.ru и в WhiteList, не помогло, и в BlackList все равно не скрывает. Ссылки на все внешние сайты отлично скрываются.

    Подскажите как правильно? В какой список добавлять и что я делаю не так?

    Спасибо.

    Я хочу скрыть в том числе и ссылки вида: https://subdomain.domain.ru/

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *