Редирект сторонних ссылок c возможностью исключений DLE 10.x

Разместил ArtsWar, 6-09-2014, 23:18 / Просмотров: 1 445 / Комментариев: 0


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

Что необходимо сделать:
1. Откройте файл parse.class.php, находится в папке engine/classes/.
2. Ищем строку (ctrl+f):
if( $this->filter_mode ) $txt = $this->word_filter( $txt, false );

Ниже вставляем (ctrl+v):

$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 );

3. Ищем строчки:
return "<a href=\"" . $url['html'] . "\" " . $target . ">" . $url['show'] . "</a>" . $url['end'];

Заменяем на:
if($this->check_home($url['html'])||$this->check_friends($url['html'])) { 
return "<a href=\"" . $url['html'] . "\" " . $target . ">" . $url['show'] . "</a>" . $url['end']; }
else
{ $url['html'] = $config['http_home_url']."go/?".($url['html']);
return "<noindex><a rel=\"nofollow\" href=\"".$url['html']."\" ".$target.">" . $url['show'] . "</a></noindex>" . $url['end']; }

4. Ищем строчки:
function word_filter($source, $encode = true) {

Выше этой строчки вставляем следующий код:

function check_friends ($url)
{
global $config;
$friend_url = file($config['http_home_url']."engine/friend/friend_user-net_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;
}

5. Ищем строчки:
return "[leech=" . $url . "]" . $show . "[/leech]";
}

Ниже вставляем:

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


Что касается четвёртого действия, а именно строки:
$friend_url = file($config['http_home_url']."engine/friend/friend_user-net_url.txt");

Путь, и имя файла можете изменить, только не забудьте выставить права доступа на чтение к папке и файлу.
В файле friend_user-net_url.txt - указывайте домены, к которым обработка данным хаком не нужна, т.е. на дружественные сайты, в формате - одна строчка, один домен, к примеру:
http://user-net.ru
http://user-net.ru


Заключительные действия:
6. В корневой директории создаём папку go, в ней файл index.php и .htaccess
7. Открываем index.php, вставляем следующий код:
<?php 
if (!empty($_SERVER['QUERY_STRING'])){
$re_addr=$_SERVER['QUERY_STRING'];
header('Location: '.$re_addr);
}
?>

8. Отрываем файл .htaccess, вставляем следующее:
DirectoryIndex index.php 
RewriteEngine Off

Установка хака завершена. У кого не функционирует, перепроверьте свои действия. Данный хак написан для User-Net.RU, работоспособность можете увидеть в уже добавленных новостях со сторонними ссылками.
На всякий случай прикладываю parse.class.php для 10.2
parse.class.rar [7,25 Kb] (cкачиваний: 2)



комментариев
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Интересное