Хак Seo Redirect Url (redirect?url=) для InstantCms2

+47
4.63K
Вы тоже по ночам не спите, ломая голову как закрыть внешние ссылки от индексации что-бы показатели сайта не утекали к реципиентам и сайт потерял привлекательность для спамеров?
crazyТогда мы идем к вам…
Не секрет, что у двойки есть встроенный редирект, но только для данных введенных через поле типа url, а в остальном… as is или остается как есть, если ссылка вставлена без тегов, или преобразуется в активную, если использована полная нотация при вставке. А, еще можно включить типограф который автоматически преобразует "плоские" ссылки в "кликабельные" Стоп! Преобразует...
glasses

Текст введенный в поле редактора может сохранятся в базу данных as is, а может обрабатываться типографом по заранее заданным правилам.
Вот их то мы сейчас и добавим.
Открываем файл system/controllers/typograph/hooks/html_filter.php
  1.  
  2.  
  3. // Отключаем типографирование в определенном теге
  4. //было
  5. //$jevix->cfgSetTagNoTypography('code','pre','youtube', 'iframe');
  6.  
  7. //стало, теперь мы сами будем препарировать и собирать обратно тег а
  8. $jevix->cfgSetTagNoTypography('code','pre','youtube', 'iframe', 'a');
  9.  
  10. // Ставим колбэк для youtube
  11. $jevix->cfgSetTagCallback('youtube', array($this, 'parseYouTubeVideo'));
  12.  
  13. // Добавляем колбэк для ссылок тега а
  14. $jevix->cfgSetTagCallbackFull('a', array($this, 'seoRedirect'));
  15.  
  16. return $jevix;
  17.  
  18. }
  19.  
И еще чуть чуть индусского кода😉 сам метод вызываемый в колбэке

  1.  
  2. public function seoRedirect($tag, $url, $content){
  3. // вытягиваем из массива ссылку
  4. foreach($url as $value){
  5. $link = $value;
  6. }
  7. // препарируем ее на части
  8. $link_data = parse_url($link);
  9. // собираем препарированные части в линк без пути
  10. $out_link = $link_data['scheme'].'://'. $link_data['host'];
  11. // проверяем на совпадение с нашим доменом
  12. if($out_link == href_to_home()){
  13. // если внутренняя ссылка
  14. $href = $out_link . $link_data['path'] ;
  15. }else{
  16. // если внешняя, то добавляем редирект
  17. $href = href_to_home() . '/redirect?url=' . $out_link . $link_data['path'] ;
  18. // контрольный в голову, что б уж наверняка
  19. $rel = 'rel="nofollow" ';
  20.  
  21. }
  22. // собираем запчасти в кучу и отдаем назад
  23. $code .= '<a '.$rel.'href="' .$href. '">'.$content.'</a>';
  24. return $code;
  25. }
  26.  
  27.  
Что, куда и зачем более-менее откомментированно в коде. Для комментариев это уже работает сразу после внесения изменений в код. Для остального, надо включить для типов контента, поле ввода — обрабатывать типографом.
а, ну еще в файле robots.txt не забыть добавить директиву Disallow: /redirect?url=*

Все, можно спать спокойно dancevsmoke

p.s. Спасибо и благодарности принимаются и на R130659251525 или Z181789078750 в том числе. Ну на лекарствах жеж сэкономили ?!...
p.p.s. C блекджеком и шлюхами плюшками? Возможно будет, в виде компонента. Позже…
+10
Игорь Lu Игорь Lu 9 лет назад #
На заметку разработчикам ИнстантЦМС, нужная вещь и достойна присутствия в следующих обновлениях.
0
VonKruger VonKruger 9 лет назад #
Ничего не изменилось! Ссылки как были так и остаались без редиректа.
-1
Mr.Andreius Mr.Andreius 9 лет назад #
Очень информативности sad по типу "шеф усе пропало..."
+1
Нил™ Нил™ 9 лет назад #
двойкой не пользуюсь. поставил плюс за драматургию поста))
+1
lesterkey lesterkey 9 лет назад #
+ scratch (А как бы еще, что б все открывалось в новом окне???/
0
Mr.Andreius Mr.Andreius 9 лет назад #
target="_blank"

Код PHP:
  1. // контрольный в голову, что б уж наверняка
  2. $rel = 'rel="nofollow" ';
  3. // открывать в новом окне
  4. $target = ' target="_blank"';
Код PHP:
  1. // собираем запчасти в кучу и отдаем назад
  2. $code .= '<a '.$rel.'href="' .$href. '"'.$target.'>'.$content.'</a>';
или просто дописать в конец открывающего тега
Код PHP:
  1. // собираем запчасти в кучу и отдаем назад
  2. $code .= '<a '.$rel.'href="' .$href. '" target="_blank">'.$content.'</a>';
0
VonKruger VonKruger 9 лет назад #
Если автору комментарий не понравился он ставит в карму профиля минус! За что, что я такого написал? Ну если не работает, так она на работает без использования форматирования! А нужно чтобы работала и так!
-1
Mr.Andreius Mr.Andreius 9 лет назад #
Ух ты как...
По порядку:

Мое право что, когда и кому ставить.

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

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

Если нужно, так возьми и доделай. Я то тут причем? Если сам не умеешь, то хотя бы объясни "человеческим языком" что тебе надо, а не выставляй претензии или требования. (За примером далеко ходить не надо. См. комменты выше.)

Хак (любой), на то и хак, что он решает всех проблем и потребностей, выложен as is, не нравится проходим мимо.
0
SALIK SALIK 8 лет назад #
Дак в комментариях и не работает
Олег Васильевич я Олег Васильевич я 9 лет назад #
Комментарий удален
+1
AlexTWinner AlexTWinner 9 лет назад #
нужная вещь, спасибо!
Буду ждать когда это будет компонентом joke
+1
Demet Demet 9 лет назад #
В ссылках подобной этой "/index.php?route=product/product&path=85_86&product_id=523" обрезаются в комментариях до "/index.php", простые как на данной странице "/raz-dva-tri-chetyre-pjat-nachinaem-kovyrjat/hak-seo-redirect-url-redirect-url-dlja-instantcms2.html" идут нормально. В чем может быть проблема?
0
Mr.Andreius Mr.Andreius 9 лет назад #
хм... проблема (вернее это ее стандартое поведение) в функции parse_url($link)
посмотрю, что можно сделать с сылками параметрического типа
0
Старый балбес Старый балбес 9 лет назад #
Demet:
В ссылках подобной этой "/index.php?route=product/product&path=85_86&product_id=523"
Опенкартовкий роутер не перепутаеш ни счем! Я отказался от раутинга, все выполняю на контроллерах!
0
Mr.Andreius Mr.Andreius 9 лет назад #
Геннадий Иванович, не факт, что Demet использует скрипт магазина. Возможно юзвери постят у него ссылки, а он с этим борется ;)
0
Demet Demet 9 лет назад #
Эти ссылки кидают пользователи друг другу в комментах на тот или иной товар на маркете, а в конечном итоге получают главную страницу маркета. Еще в вашем хаке есть один неприятный момент, когда закрываю ссылку редиректом в теле поста, то вставленный через redactor видеоролик с ютуб выводится в неприглядном маленьком размере, видимо его так типограф кастрирует.
0
Mr.Andreius Mr.Andreius 9 лет назад #
C ютубом хак не взаимодействует, а вот типограф сам по себе - да.
0
Demet Demet 9 лет назад #
А мимо типографа редирект пустить не получится?
0
ivanish ivanish 8 лет назад #
Отвалилось на 2.5

Ругается на // собираем запчасти в кучу и отдаем назад
$code .= '<a '.$rel.'href="' .$href. '">'.$content.'</a>';
return $code;
}


Что поправить, подскажите

Еще от автора

Один сайдбар? А может два? Слева или справа?
Для того что бы сделать шаблон более функциональным в него обычно добавляется сайдбар.
Автоматическая подстройка высоты поля ввода для формы быстрого ответа в форуме.
Наверное все обращали внимание, что при написании длинных постов в блогах, поле ввода не имеет полосы прокрутки и автоматически подстраивается под тек
Редактирование аватаров пользователей Администратором
После установки Instant CMS начал знакомство с функционалом системы. Был приятно удивлен тем, что админ не может изменять аватар пользователя.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.