Редирект внешних ссылок

88 7 июня 2017
Версия DLE: 9.x - 13.x
Стоимость: FREE

ionCube Loader: NOT

Последнее обновление: 1 марта 2019


 Подписаться 1 Скачать

Этот маленький хак позволит Вам изменять все внешние ссылки в новостях на *site/go/?, с добавлением тегов от индексации поисковиков nofollow.

Автор: i-notes
Правки: vitnet

Обновлено: 1 марта 2019 - Изменения смотрите в разделе история
Установка:

1. Открываем файл engine/classes/parse.class.php
Найти:
if( $this->safe_mode AND !$config['allow_search_link'] AND $target )
				return "<a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a>" . $url['end'];
			else
				return "<a href=\"" . $url['html'] . "\" " . $target . ">" . $url['show'] . "</a>" . $url['end'];

Заменить на:
if( $this->safe_mode AND !$config['allow_search_link'] AND $target ) {
				return "<a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a>" . $url['end'];
			} elseif( $this->check_home($url['html']) ) {
				return "<a href=\"" . $url['html'] . "\" " . $target . ">" . $url['show'] . "</a>" . $url['end'];
			} else {
				$url['html'] = $config['http_home_url'] . "go/?" . $url['html'];
				return "<a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a>" . $url['end'];
			}

Далее найти:
dle 10.1, 10.2
function decode_url( $matches = array() ) {
		
		$show = $matches[3];
		$url  = $matches[1].$matches[2];
		$url = str_replace("&amp;","&", $url );
		
		return "[url=" . $url . "]" . $show . "[/url]";
	}

dle 10.3
function decode_url( $matches=array() ) {
		
		$url    = $matches[1];
		$show   = $matches[3];
		$params = trim($matches[2]);
		if( !$params OR $params == 'target="_blank"' OR $params == 'target="_blank" rel="nofollow"' OR $params == 'rel="nofollow"' ) {
			$url = str_replace("&amp;", "&", $url );
			return "[url=" . $url . "]" . $show . "[/url]";
 		} else {
			return $matches[0];
		}
	}

dle 12.x
function decode_url( $matches = array() ) {
		$url  = $matches[1];
		$show = $matches[3];
		$params = trim($matches[2]);
		if( preg_match( "#title=['\"](.+?)['\"]#i", $params, $match ) ) {
			$match[1] = str_replace("&quot;", '"', $match[1]);
			$match[1] = str_replace("&#039;", "'", $match[1]);
			$match[1] = str_replace("&amp;", "&", $match[1]);
			
			$url = $url . "|" . $match[1];
			$params = trim(str_replace($match[0], "", $params));
		}
		
		if( preg_match( "#rel=['\"](.+?)['\"]#i", $params, $match ) ) {
			$params = trim(str_replace($match[0], "", $params));
		}
		
		if( !$params OR $params == 'target="_blank"' ) {
			$url = str_replace("&amp;", "&", $url );
			return "[url=" . $url . "]" . $show . "[/url]";
 		} else {
			return $matches[0];
		}
	}

Заменить на (привести в такой вид)
dle 10.1, 10.2
function decode_url( $matches = array() ) {
		global $config;
		$show = $matches[3];
		$url  = $matches[1] . $matches[2];
		$url = str_replace("&amp;","&", $url );
		$url = str_replace($config['http_home_url'] . "go/?", "", $url);
		
		return "[url=" . $url . "]" . $show . "[/url]";
	}

dle 10.3
function decode_url( $matches = array() ) {
		global $config;
		
		$url    = $matches[1];
		$show   = $matches[3];
		$params = trim($matches[2]);
		if( !$params OR $params == 'target="_blank"' OR $params == 'target="_blank" rel="nofollow"' OR $params == 'rel="nofollow"' ) {
			$url = str_replace("&amp;", "&", $url );
			$url = str_replace($config['http_home_url'] . "go/?", "", $url);
			return "[url=" . $url . "]" . $show . "[/url]";
 		} else {
			return $matches[0];
		}
	}

dle 12.x
function decode_url( $matches = array() ) {
		$url  = $matches[1];
		$show = $matches[3];
		$params = trim($matches[2]);
		if( preg_match( "#title=['\"](.+?)['\"]#i", $params, $match ) ) {
			$match[1] = str_replace("&quot;", '"', $match[1]);
			$match[1] = str_replace("&#039;", "'", $match[1]);
			$match[1] = str_replace("&amp;", "&", $match[1]);
			
			$url = $url . "|" . $match[1];
			$params = trim(str_replace($match[0], "", $params));
		}
		
		if( preg_match( "#rel=['\"](.+?)['\"]#i", $params, $match ) ) {
			$params = trim(str_replace($match[0], "", $params));
		}
		
		if( !$params OR $params == 'target="_blank"' ) {
			$url = str_replace("&amp;", "&", $url );
			$url = str_replace($config['http_home_url'] . "go/?", "", $url);
			return "[url=" . $url . "]" . $show . "[/url]";
 		} else {
			return $matches[0];
		}
	}

2. В корне сайта создаем папку go и в этой папке создаем файл index.php со следующим содержимым:

v.1
<?php
if( !empty($_SERVER['QUERY_STRING']) ) {
	header('Location: ' . $_SERVER['QUERY_STRING']);
} else header('Location: /');
?>

v.2
<?php
if( !empty($_SERVER['QUERY_STRING']) ) {
	echo <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Переход по внешней ссылке</title>
	<!--meta http-equiv="Content-Type" content="text/html; charset=utf-8" /-->
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
	<meta name="robots" content="noindex">
	<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
</head>
<body id="body">
	<noindex><br /><br /><center>Перенаправление на внешний ресурс: <br /><br />
	<div id="waiting"></div>
	<noscript>Нажмите <a href="{$_SERVER['QUERY_STRING']}" rel="nofollow">сюда</a> если ваш браузер не перешел по ссылке автоматически.</noscript></center></noindex>
	<script type='text/javascript'>
	function countdown(sec) {
		sec--;
		if( sec > 0 ) {
			document.getElementById("waiting").innerHTML = 'Осталось '+sec+'c.';
			window.setTimeout("countdown("+sec+")", 1000);
		} else { 
			document.getElementById("waiting").innerHTML = 'Нажмите <a href="{$_SERVER['QUERY_STRING']}" rel="nofollow">сюда</a> если ваш браузер не перешел по ссылке автоматически.';
			window.location.href = "{$_SERVER['QUERY_STRING']}";
		}
	}
	countdown(3); // Сколько секунд ждать: 3 = 3 сек.
	</script>
</body>
</html>
HTML;
} else header('Location: /');
?>

3.Так же в папке /go/ рекомендуется создать файл .htaccess со следующим содержимым:
DirectoryIndex index.php
RewriteEngine Off

Готово!

Теперь создаем какую-нибудь новость и смотрим на результат. Все внешние ссылки будут с атрибутом nofollow, а также сама ссылка вида http://site/go/?http://внешняя ссылка

* В админ центре, в разделе Перестроение публикаций выполните перестроение (для старых новостей).
Нет скриншотов!
27.02.19
Добавлена поддержка DLE 13.1
DLE 13.1
redirekt-vneshnih-ssylok.rar [798 b] (cкачиваний: 6)
Нет видео!
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.


Подписка на новости

Подписаться

Кто онлайн
2 посетителя на сайте. Из них:
Гости2