Показать сообщение отдельно
Старый 27.10.2011, 08:00 Вверх   #1
Новичок
 
Аватар для Dobry
Dobry вне форума
Доп. информация
По умолчанию Редирект внешних ссылок + белый список

Я столкнулся с проблемой нахождения хака закрытия/редиректа внешних ссылок для версии 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)), 010);
              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(urlid)
{
     
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"] есть поле для создания белого списка адресов. Вписываем нужные вам (каждый новый адрес с новой строки). Сохраняем. Все.

Последний раз редактировалось Dobry; 04.08.2012 в 15:51.. Причина: уточнения
  Ответить с цитированием
9 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.06116 секунды с 10 запросами