Я столкнулся с проблемой нахождения хака закрытия/редиректа внешних ссылок для версии
4.х.х.
Мне удалось ее решить невероятно просто, редактированием одного исходного файла движка, вставкой в шаблон джава-скрипта, и, активизацией опции
rel=nofollow в основных настройках админпанели.
Подобная тема есть здесь, но там эта инструкция для версии
3.8.4. http://www.bormotuhi.net/showthread.php?t=7518
Я рекомендую к этой инструкции обратиться, так как я взял маленький кусочек рнр-кода и адаптировал его. Но главное, что там описано в конце, когда вы уже все выполните. По желанию можно будет выполнить запрос в БД, чтобы все ссылки на форуме поменялись. Лично я этого запроса не делал, так как все внешние ссылки, кроме белого списка, сами стали закрытыми.
Итак, адаптация рнр-кода стала возможной благодаря уже вшитой опции
rel=nofollow в основных настройках админпанели. Нам остается лишь этим воспользоваться.
=========
Установка затрагивает:
1. Редактирование одного файла
class_bbcode.php.
2. Активизировать опцию "
rel=nofollow" в настройках в админке.
3. Добавление небольшого ява-скрипта в в шаблон.
=========
1. Идем в Админку -> "
Настройки" -> "
настройка ВВ кодов" -> [устанавливаем галочку в "
да", напротив "
rel=nofollow"]
2. Редактируем файл includes/
class_bbcode.php ищем там функцию function
handle_bbcode_url($text, $link)
Идем в самый конец этой функции и находим там строку: (приблизительно 2312 строка)
PHP код:
// standard URL hyperlink
return "<a href=\"$rightlink\" target=\"_blank\"" . ($is_external ? ' rel="nofollow"' : '') . ">$text</a>";
комментируем двумя слешами
return и получаем такой вид:
PHP код:
// standard URL hyperlink
// return "<a href=\"$rightlink\" target=\"_blank\"" . ($is_external ? ' rel="nofollow"' : '') . ">$text</a>";
3. Чуть ниже, после
// return вставляем код и сохраняем файл:
PHP код:
###########################
// Условие замены стандартной URL hyperlink на закрытую внешнюю URL hyperlink
// Идем: Админка => Основные настройки => Настройки ББ кодов => [ставим галочку напротив "добавлять к внешним линкам rel=nofollow"]
if(!$is_external)
{
// Вставка (стандартной URL hyperlink) или (URL из белого списка в настройках админки) или линка со своего домена, на котором установлен форум
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}else{
// замена внешней URL (кликабельной) на завуалированную текстовую URL-ссылку - Редирект
$uniqid = substr(md5(uniqid(rand(), true)), 0, 10);
return "<noindex><span id=\"extlink_" . $uniqid . "\" title=\"External Link, no Referer ".$rightlink."\" style=\"text-decoration:underline; cursor: pointer;\" onclick=\"return open_external('$rightlink', this.id);\">$text</span></noindex>";
}
###########################
4. Идем в Админку -> "
Стили и шаблоны" -> "
Поиск в шаблонах" -> [вбиваем в поиск:
headinclude]
В шаблоне, в самом конце вставляем код джава-скрипта и сохраняем шаблон:
PHP код:
<script type="text/javascript">
<!--
function open_external(url, id)
{
w = window.open('about:blank', id);
w.document.write('<meta http-equiv="refresh" content="0;url='+url+'">');
w.document.close();
return false;
}
-->
</script>
Заливаем измененный файл
class_bbcode.php на удаленный сервер,
(затирая оригинал) в папке "
includes"
Сохраняем изменения и радуемся. Редиректы будут работать для всех сообщений. Для того чтобы ссылки на форуме поменялись нужно обновить страницы, если они у вас загружены в браузере кнопкой F5. Если не поменялись, то нужно почистить кеш браузера.
Для того, чтобы создать белый список адресов (внешних), нужно прописать их в настройках админки:
Идем в Админку -> "
Настройки" -> "
настройка ВВ кодов" -> [ ниже опции "
rel=nofollow"] есть поле для создания белого списка адресов. Вписываем нужные вам (каждый новый адрес с новой строки). Сохраняем. Все.