Хак редирект с поддержкой исключений

Тема в разделе "DLE", создана пользователем method, 14 янв 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    Самое радикальное решение борьбы со ссылочным спамом, оставляя кликабельность, это редирект. Данный хак не только ставит редиректы, но и покрывает ссылки редиректа в ноиндекс и нофоллов, таким образом вес вашей страницы не будет уменьшаться из за ссылок например на ту же рапиду. А самая главная фишка, - поддержка сайтов-исключений (дружественных сайтов) на которые редирект ставится не будет.

    Находим в каталоге engine/classes/ файл parse.class.php, открываем его нашим редактором найдите следующую строчку кода:
    PHP:
    if ($this->filter_mode$txt $this->word_filter($txtfalse);
    вставляем ниже
    PHP:
    /* 
    Раскодировка сформированного URL-адреса
    */
    $txt preg_replace"#<!--FFriend--><noindex><a rel=\"nofollow\" href=[\"'](http://|https://|ftp://|ed2k://|news://|magnet:)?(\S.+?)['\"].+?".">(.+?)</a></noindex><!--EndFFriend-->#ie" "\$this->decode_friend('\\1\\2', '\\3')"$txt );
    Находим
    PHP:
    return "<a href=\"".$url['html']."\" ".$target.">".$show."</a>" $url['end'];
    Заменяем
    PHP:
    /* 
    Формирование URL-адреса
    */
    if($this->check_home($url['html'])||$this->check_friends($url['html']))
    {
           return 
    "<a href=\"".$url['html']."\" ".$target.">".$show."</a>" $url['end'];
    }
    else
    {
          
    $url['html'] = $config['http_home_url']."go/?".($url['html']);
          return 
    "<!--FFriend--><noindex><a rel=\"nofollow\" href=\"".$url['html']."\" ".$target.">".$show."</a></noindex><!--EndFFriend-->" $url['end'];
    }
    Находим
    PHP:
    function word_filter($source$encode true) {
    вставляем выше
    PHP:
    /*
    Функция: "Дружественный URL"
    */    
    function check_friends ($url)
    {
        global 
    $config;         
        
    $friend_url file($config['http_home_url']."engine/friend/friend_url.txt");      
            
        for (
    $i 0$i count($friend_url); $i++)
        { 
            
    $value str_replace("http://"""trim($friend_url[$i]));
            
    $value str_replace("www.""",    $value);
            
    $value explode('/'$value);
            
    $value reset($value);
                          
            if (
    $value == "" ) continue;
            if (
    strpos($url$value) === false) continue; else return true;
        }
        return 
    false;
    }
    Находим
    PHP:
    return "[leech=".$url."]".$show."[/leech]";
    }
    Вставляем
    PHP:
    /*
    Раскодировка сформированного URL-адреса
    */
    function decode_friend($url=""$show="")
    {    
        global 
    $config;
        
    $home_url $config['http_home_url']."go/?";
            
        
    $url str_replace($home_url""$url);
        
    $url explode ("url="$url);
        
    $url end $url );
        
    $url rawurldecode($url);
            
        return 
    "[url=".$url."]".$show."[/url]";
    }
    Сохраняем, заливаем.
    в строке
    PHP:
      $friend_url file($config['http_home_url']."engine/friend/friend_url.txt");
    мы указывалипуть к текстовичку, в котором будут дружественные сайты. Изменяем путь и имя по желанию.
    Создаем в папке engine подпапку friend, файл friend_url.txt. Не забудьте проверить права на чтение нашей папки и файла с URL.
    Заполняем файл friend_url.txt в каждой строке по домену, в формате http://nulled.ws/

    Создаем в корне папку go в ней файл index.php такого содержимого
    PHP:
    <?php
    if (!empty($_SERVER['QUERY_STRING'])){
    $re_addr=$_SERVER['QUERY_STRING'];
    header('Location: '.$re_addr);
    }
    ?>
    создаем там же файл .htaccess
    содержимого
    PHP:
    DirectoryIndex index.php
    RewriteEngine Off

    Со всеми вопросами к автору на _seomax.info, тут выкладываем если что, сразу с решениями. Проверялся на 7.0 и 7.3, пока проблем не возникло,мною тестировались все прерыдущие версии этого хака, все они были доработаны и на данный момент это финальная версия.
     
    merzkiy, sk8er, advil и 6 другим нравится это.
  2. eargon

    eargon

    Регистр.:
    5 дек 2007
    Сообщения:
    181
    Симпатии:
    9
    данный хак дейтсвует на ВСЕ ссылки сайта + новости, или только на ссылки в новостях?
     
  3. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    обрабатываются все ссылки, которые проходят через парсер - новости, коменты, профиль и так далее. Ссылки вставленые в шаблон вами естественно не трогаются.
     
  4. baltazorg

    baltazorg

    Регистр.:
    7 авг 2008
    Сообщения:
    203
    Симпатии:
    71
    Опубликованные новости нужно будет заново пересохранять или хак ко всей базе новостей применится?
     
  5. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    если вы видете какие либо танцы в инструкции с базой, то применится ко всей. А так редирект ставиться на все, что обрабатывается парсером. С того момента, как код этого самого редиректа в том самом парсере заприсутствует.
     
  6. baltazorg

    baltazorg

    Регистр.:
    7 авг 2008
    Сообщения:
    203
    Симпатии:
    71
    Поставил, в общем хак применяется для новостей, которые добавляются после установки этого хака, а старые новости надо заново открывать для редактирования и сохранять. Но все равно спасибо.
     
  7. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    540
    Симпатии:
    70
    Народ ну непонемаю чем Вы паритесь??? Сохраняем базу открываем в любом текстовом редакторе и через замену все делаем! Если в падло то можно и прямо на сайте! Только прошу не спрашивайте как это делается....
     
  8. eargon

    eargon

    Регистр.:
    5 дек 2007
    Сообщения:
    181
    Симпатии:
    9
    скажите, а что будет если потом удалить хак, ссылки останутся не рабочими или нет?
     
  9. baltazorg

    baltazorg

    Регистр.:
    7 авг 2008
    Сообщения:
    203
    Симпатии:
    71
    Главное папку "go" с ее содержимым из корня не удалять, тогда ссылки будут работать.
     
  10. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    если вы вернете начальные настройки парсера то все опубликованые новости, коментарии на период "пристутсвия" хака остануться отфармотироваными с редиректом. И тогда у вас 2 пути, либо оставить все как есть (предыдущий комент) либо редактировать инфу. Редаткрировать редирект очень просто, в админке использщовать функцию найти и заменить, и заменить с базы все ссылки вида http://site.ru/go/?http:// на http://
     
Статус темы:
Закрыта.