nofollow

Movable Type 4.23

Решил по случаю воскресенья поапргейдить блоговый движок. C Movable Type 4.21 на 4.23.

Обнаружил неприятность: в поиске (включая поиск по тегу) пролюбили локализацию дат. То бишь, независимо от настроек блога, название месяцев пишутся английские, а формат даты тоже тамошний (Месяц, число год).

Пришлось действовать следующим нетривиальным способом:

  • Берем коммерческий дистрибутив MT 4.23 (его раздают бесплатно всем Pronet Members). Коммерческий потому как попытки использовать Custom Fields я не оставляю.
  • Накатываем сверху (с перезаписью файлов) русский дистрибутив
  • Патчим это обычными моим патчами для MT (патч для dirify не нужен, он в русской версии уже есть, закрытие ссылок в комментариях через noindex там тоже есть, но мой последний вариант лучше, хотя его и придется вставить вручную).

В русской версии MT 4.23 пролюблены еще права на исполнение, приходится руками ставить 0755 на mt/*cgi и mt/tools/*

В результате имеем текущее состояние: версия 4.23, даты везде русские. Хотя меня оно уже все сильно достало, вяло думаю, что надо все унести на Drupal. Правда туда придется писать синхронизацию с ЖЖ, что тоже лень делать.

noindex-патч для Drupal 6.x, вторая попытка

В духе нового патча для Movable Type сделал новый nofollow-noindex патч для Drupal 6,x

  1. Сначала надо установить новый вариант предыдущего патча: drupal-noindex-patch2.gz
    После его применения, все страницы, для которых включена фильтрация внешних ссылок, будут иметь ссылки замененными на a href="#link" onClick="return URL-ссылки"
  2. Далее в шаблон страницы, где-то ниже текста комментариев (мы же боремся с ссылками в комментариях, правильно) нужно разместить такой вот javascript-код:
    var links = document.getElementsByTagName('A');
    for(var i=0; i < links.length; i++)
    {
       if(links[i].href.match(/\#link/) && typeof links[i].onclick == 'function'){
            links[i].href=links[i].onclick();        
        }
    }

    После этого наступает счастье: пользователи ничего не замечают (ну, кроме тех, у кого выключен Javascript, у тех после каждой ссылки появляется слово [link]), а поисковые машины индексируют только текст ссылки, но не учитывают ее как ссылку. Чего мы и добивались.

noindex-патч для MovableType, 4-я попытка

По совету Николая Сиварева удалось избавиться от главного недостатка моего предыдущего noindex-патча для Movable Type: неудобства при открытии ссылки по правой кнопке.

Правда патч усложнился и теперь состоит из двух частей.

  1. На Movable Type нужно наложить вот этот вот патч: patch-nofollow-img-js2.gz.
    В результате все внешние ссылки получат вид <a href="#link" onClick="return 'http://link-target';">
  2. В темплейт, где-то в районе footer нужно добавить следующий Javascript-код:
     
    var links
  3. ...

Drupal: второй патч для noindex

Помимо стандартного HTML Filter, который пришлось править для защиты от ссылочного спама, в Drupal обнаружилось еще одно аналогичное место: заголовок комментария.

Для зарегистрированных на сайте пользователей, имя пользователя является ссылкой на профиль, если читающий не залогинен, то даже и ссылки нет. Для сторонних же пользователей, указавших при комментировании линк на сайт, имя является ссылкой на этот сайт. Конечно, эта ссылка защищена от гугла через rel=nofollow, но наши поисковики такого не понимают, а хотят noindex.

Патч: drupal-themeinc-noindex.diff.gz

Так как я не вижу никакого смысла в индексировании Яндексом юзерских ников анонимов, то ухищрения с яваскриптом не нужны, просто noindex и все.

nofollow-noindex патч для Drupal 6.4

Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.

Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.

Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:

Сделано примерно так же, как для Movable Type:

  • Сама ссылка заменяется на явоскриптовую
  • В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).

Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.

Ссылками в комментариях спамят не только этот блог, но и мои сайты на Drupal (libraw.org,gpgpu.ru и так далее). В отличие от MovableType, антиспам-средства у Drupal развиты еще меньше, приходится пропускать без модерирования только зарегистрированных юзеров, но и это не вполне помогает.

Мировая часть проблемы в Drupal решена - ко всем ссылкам в юзерском контенте можно добавлять rel=nofollow, отчего спамить под гугл становится неинтересно. Остается яндекс, который rel=nofollow не понимает (насколько мне известно), но зато понимает "рамблеровский" (придуманный Димой Крюковым) тег <noindex>.

Сооответственно, нужно добавить три строчки кода к modules/filter/filter.module:

Сделано примерно так же, как для Movable Type:

  • Сама ссылка заменяется на явоскриптовую
  • В noscript,noindex, a.. rel=nofollow помещается слово [link] которое и становится ссылкой для Javascript-disabled people (стандартные стили у Drupal такие, что картинка переносится на новую строку и красивая стрелка не получается).

Стандартный дисклеймер. Если вы не знаете что такое патч, то вам все вышеописанное не нужно.

nofollow-патч для MovableType, 3-я попытка

После высказанной критики, вчерашний патч пришлось усовершенствовать:

  • Картинка со ссылкой убирается в <noscript>, большинство посетителей ее не увидят.
  • Переход по ссылке делаем яваскриптом, через window.location=

Патч вот: patch-nofollow-img-js.gz

Понятно, что есть недостатки:

  • В статусной строке не отображается URL. Это тоже лечится яваскриптом, но уже лень т.к. просто присвоение windows.status= не работает в Firefox/Opera, нужно таймеры ставить.
  • Потерялось открытие ссылки в отдельном окне. Можно, наоборот, сделать через window.open, но тогда потеряется открытие в текущем. Счастья нет.

В этом блоге, впрочем, используется несколько другая версия патча, которая оставляет ссылки на мои сайты прямыми, а остальные открывает в новом окне. Не публикую т.к. не нашел разумного способа вытащить хотя бы URL текущего блога в том месте, где зовется nofollowfy();

MovableType: новый nofollow-патч, MT 4.21

Поапгрейдил варез на MovableType 4.21 (коммерческий, раз уж его всем раздают). Работает. Стало местами поприятнее выглядеть, а так я кардинальной разницы не вижу. Ну плагин для тредовых комментариев теперь прямо в поставке, но он у меня и так был.

Раз уж засунул туда нос, переделал свой патч для <noindex>. У старого была проблема в том, что сам текст ссылки не индексировался Яндексом (ибо ссылка была запихана в noindex целиком). Теперь ссылка устроена иначе - текст подчеркивается, а сама ссылка теперь в иконке (позаимствованной у Википедии). Пример можно посмотреть в любых комментариях, например тут.

Скачать патч можно тут:

  • patch-nofollow-img.gz. Возможно, вам захочется поправить URL картинки, но это уже сами.

Чтобы два раза не вставать, полный список остальных моих патчей к MT 4.x:

  • patch-monday-mt41.gz делает понедельник первым днем недели в стандартном календаре.
  • patch-rudate.gz - русские названия дат (переведен блок для итальянского языка, его и нужно ставить в настройках блога).
  • patch-dirify.gz - добавляет русские буквы в таблицы "дирификации".

Все патчи подходят к 4.21

Еще про nofollow в MovableType 4

Как мне тут справедливо указали, настройка "приделывать rel=nofollow к комментариям и трекбекам" не влияет на содержимое тега CommentAuthorIdentity

Пятиминутный просмотр исходников показал, что это бага в MovableType, в функции реализующей вышеуказанный тег просто пропустили одну строчку

Прилагаемый патч решает эту проблему. Естественно, после приложения патча нужно перебилдить все странички.

Вот и пригодился ProNet-овский аккаунт. Я через него засабмитил тикет, посмотрим чем кончится.

Да, если вы используете мой патч про noindex, то ссылки в обсуждаемом теге будут обвернуты и noindex тоже

Update: из саппорта ответили "читайте документацию" (см. комментарии). И ведь они правы.

Subscribe to nofollow