Перейти к публикации

Защита DataLife Engine от внешних ссылок для версии 8.5


Рекомендованные сообщения

Добрый день!

Как многие наверно есть способ так сказать защищать сайт от внешних ссылок.

Cсылки типа

http://site.ru
превращаются в
http://moy_site/go/?http://site.ru/
плюс автоматически добавлялось
<noindex> и nofollow
в нужных местах. Сейчас я выложу тут РАБОЧИЙ код с инструкцией для версий 8 - 8.3. (Автор: seomax.info) (перед изменениями кода на своём сайте обязательно создайте бекап) 1. Находим в каталоге engine/classes/ файл parse.class.php, открываем его (желательно редактором Notepad++)и найдите следующую строчку кода:
if ($this->filter_mode) $txt = $this->word_filter($txt, false);
После него аккуратно копируем и вставляем код приведенный ниже:
/* Назначение: Раскодировка сформированного URL-адреса 

Автор: www.seomax.info

*/

$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 );
2. Далее находим такой код:
return "<a href=\"".$url['html']."\" ".$target.">".$show."</a>" . $url['end'];
Удаляем его и вместо него пишем следующий код:
/* Назначение: Формирование URL-адреса 

Автор: www.seomax.info

*/

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'];

}

3. Продвигаемся далее по коду и находим следующий код:
function word_filter($source, $encode = true) {

Выше этого кода пишем следующий код:
/* Функция: "Дружественный URL" 

Автор: www.seomax.info

*/    

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;

}

4. И последний шаг для редактирования этого файла. Найдите код:
return "[leech=".$url."]".$show."[/leech]";

}

Ниже пишем следующий код
/* Функция: Раскодировка сформированного URL-адреса 

Автор: www.seomax.info

*/

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]";

}

5. Сохраняйте файл parse.class.php -------------------------------------------- 6. Перейдите в каталог engine и создайте папку friend. В нее нужно добавить файл friend_url.txt, структура этого "текстового" файла простая - список URL-адресов дружественных сайтов. Не забудьте добавить права на чтение нашей папки и файла с URL. Смотрите пример:
http://dle-news.ru/

http://webtun.com/

Список составляете так как приведено в примере. Обратите внимание на то, что все URL нужно указывать с http:// в начале и / в конце. Сохранили этот список в каталог engine/friend/ с именем friend_url.txt -------------------------------------------- 7. Переходим в корень сайта и создаём в нем папку go. Теперь с помощью нашего редактора (рекомендую Notepad++) сделайте файл index.php со следующим кодом:
<?php

if (!empty($_SERVER['QUERY_STRING'])){

$re_addr=$_SERVER['QUERY_STRING'];

header('Location: '.$re_addr);

}

?>

Теперь поместите этот файл в каталог go который вы только что создали. Так же, так как хостингов очень много, и практически у каждого свои настройки Apache и так далее, бывает что не определяется файл как индексный. Давайте это исправим, создайте файл .htaccess с текстом внутри:
DirectoryIndex index.php

RewriteEngine Off

Вот и всё.

Кто хочет может закрыть в robots.txt закрыть индексацию каталога go

На версиях 8, 8.2, 8.3 код работал отлично. Но в версии 8.5 появился так сказать "баг".

Если новость отправлять сразу на сайт то и на 8.5 всё работает на ура.

Но если новость например прислали или просто не поставить галочку на "Опубликовать новость на сайте"

например 5d.jpeg мы вставили ссылку, не отправили сразу на сайт а просто сохранили.

если после этого просмотреть заготовленную новость то он почемуто стала выглядеть так:

8h.jpeg

раньше такого не было.

Люди, кто знает как нужно изменить это дополнение чтоб работало на версии 8.5 ???? Что изменилось в файле parse.class.php по сравнению с предыдущими релизами?

Сайт webtun.com

Изменено пользователем Webtun
Ссылка на сообщение
Поделиться на других сайтах

<noindex> и rel="nofollow"

Все давно знают как поисковики относятся к этому, тут спорить можно вечно, но есть практика - которая диктует правила.

А надо просто чтобы в следующем релизе по группам давали права на использование или его подмену на [leech] еще плюсом можно добавить noindex и гугла примочки.

Ссылка на сообщение
Поделиться на других сайтах
  • 8 месяцев спустя...

Как-то всё очень сложно и коряво. Можно всё это в одну-две строчки вписать и в одном месте, просто заменить любую из ссылок, которая не начинается на "/", либо начинается на любой протокол, например, "http://", но чужого домена (внешнего), при этом совершенно бессмысленно ставить ноуфоллоу и ноуиндекс, если в роботсе запретить индекс редиректной страницы.

Ссылка на сообщение
Поделиться на других сайтах

Для 9.0 подобное существует, если да, то где взять?

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

  • Поддерживаю 1
Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...