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

Редирект внешних ссылок в IPB 3Вчера обновил один форум на движке IPB (Invision Power Board) до версии 3.1.1 и остался недоволен новым движком (может быть стоило поставить локализованную версию IBR). Более чем за полгода в Интернете практически не появились никаких модификации для форума, а все переводы выполнены с множеством ошибок.
Так что перевод придется поправлять самому, а некоторые моды адаптировать для новой версии данного движка.
Выкладываю простенький хак для редиректа внешних ссылок.

Преимущества данного хака:
• Все внешние ссылки открываются в новом окне, индксация настраивается в админцентре (Системные настройки, Форумы, Темы, сообщения и опросы, Добавлять rel="nofollow" и rel="noindex" к размещенным ссылкам).
• Внутренние ссылки открывается в этом же окне и индексируются поисковиками.
• Внутренними ссылками считаются с поддоменом www и без него.

Установка

Папку go вместе с файлом index.php скопируйте в корень форума.

Далее открываем файл ./admin/sources/classes/bbcode/custom/defaults.php
Ищем код:
return "<a href='{$option}' class='bbc_url' title='{$_title}'{$rel}>{$content}</a>";
Для версий 3.1.2 и более старых ищем следующий код:
return "<a href='{$option}' class='bbc_url' title='{$this->lang->words['bbc_external_link']}'{$rel}>{$content}</a>";

И перед данным кодом добавляем:
        if (strtolower(str_replace('www.', '', $_SERVER["HTTP_HOST"])) != strtolower(str_replace('www.', '', parse_url($option, PHP_URL_HOST))))
        {
            $option = $this->settings['board_url'].'/go/?'.$option;
            $rel .= ' target=\'_blank\'';
        } else {
            $rel = '';
        }


Архив с папкой: redirekt-vneshnix-ssylok.zip [1.28 Кб] (cкачиваний: 271)

Теги: IPB
Последние изменения: 29 мая 2011

Причина: Поправка в коде, при проверке все символы преобразуются в строчные


Aff (20 декабря 2010 19:18) #1
Поправьте! я голову сломал почему не открывается то что нужно!

$option = $this->settings['board_url'].'/go/?url='.$option;


То есть лучше:
$option = $this->settings['board_url'].'/go/index.php?url='.$option;
[цитировать]


WhyMax (21 декабря 2010 23:55) #2
Разницы нет, если грамотно настроен веб-сервер.
Без index.php?url= ссылки красивее, у всех редирект сервисов такие же ссылки.
Вот пример:
http://whymax.ru/go/?http://yandex.ru
[цитировать]


Aff (27 декабря 2010 10:23) #3
Хм но у меня же не работал /go/?http://, вот я и решил написать, думал ошибка :)
[цитировать]


leaderru (25 января 2011 22:27) #4
Можно index.php загрузить в корень форума под именем go.php, а в самом коде написать $option = $this->settings['board_url'].'/go.php?'.$option;
[цитировать]


rost (29 мая 2011 00:13) #5
Здравствуйте. Спасибо за скрипт - полезный. Только при ссылке вида допустим WhyMax.ru - делает редирект. Считает - внешей ссылкой. (При использовании заглавных букв)
[цитировать]


WhyMax (29 мая 2011 15:02) #6
Попробуйте так:
        if (strtolower(str_replace('www.', '', $_SERVER["HTTP_HOST"])) != strtolower(str_replace('www.', '', parse_url($option, PHP_URL_HOST))))
        {
            $option = $this->settings['board_url'].'/go/?'.$option;
            $rel .= ' target=\'_blank\'';
        } else {
            $rel = '';
        }
[цитировать]


Siri (29 мая 2011 17:19) #7
Извините, но после установки вашего кода в default.php перестали открываться страницы с топиками - белая страница. удаление кода из default.php ничего не дало. чистка кэшей тоже. в чем дело? IPB3.1.4 с ЧПУ
[цитировать]


WhyMax (30 мая 2011 03:11) #8
Siri,
Дело не в этом коде, он отвечает только за парсинг ссылок при редактировании сообщений.
Тем более если после удаления кода ничего не изменилось.
На IPB 3.1.4 все работает, проверено многими форумами :)
[цитировать]


Siri (31 мая 2011 00:57) #9
Помогла только установка файла default.php из бэкапа для восстановления работы форума. так в чем же дело? возможно, этот файл как то кэшируется на сервере...
[цитировать]


rost (1 июня 2011 21:01) #10
руки из попы у вас просто :) этот скрипт просто "подмазывается" к стандартному функционалу IPB 3.
[цитировать]


Lame (15 марта 2012 18:20) #11
Ребята, у меня получается статичная страничка редиректа, ссылка на ней не работает - жмешь, и просто страница обновляется... расскажите: почему так, и что делать, пожалуйста)
[цитировать]

Добавление комментария

Код: Включите эту картинку для отображения кода безопасности
обновить, если не виден код
Введите код