Достался мне проектик, целью которого заказчик поставил мне монетизацию ресурса.
Более всего страниц досталось на форум (сапа увидела в районе 3к).
Собственно первоочередной задачей я обозначил — преобразование всех существующих внешних ссылок во внутренние (для чего — думаю понятно).
Сразу к реализации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// в viewtopic.php добавляем 2 функции (можно объединить в одну, но я не стал заморачиваться) function href2int($buf) { //преобразуем внешние ссылки во внутренние if (preg_match_all(‘#href\s*=\s*[«|\’]?(http://.*?)[«|\’|\s|>]#si’, $buf, $matches)) { $links = $matches[1]; foreach ($links as $lnk) { if (stristr($lnk,‘sitename’)) continue; $search[]= $lnk; $replace[]=‘http://www.sitename.ru/go/’.substr($lnk,7); } $buf = str_replace($search, $replace, $buf); }; return($buf); } function http2int($buf) { //преобразуем внешние ссылки во внутренние if (preg_match_all(‘#[«|\’]?(http://.*?)[«|\’|\s|>]#si’, $buf, $matches)) { $links = $matches[1]; foreach ($links as $lnk) { if (stristr($lnk,‘sitename’)) continue; $search[]= $lnk; $replace[]=‘http://www.sitename.ru/go/’.substr($lnk,7); } $buf = str_replace($search, $replace, $buf); }; return($buf); } // перед строчкой $template->assign_block_vars(‘postrow’, array( … добавляем $www = http2int($www); $www_img = href2int($www_img); $user_sig = http2int($user_sig); $message = href2int($message); |
всё — на выходе уже преобразованные ссылки
сам механизм преобразования (один из многих рабочих вариантов):
делаем в корне сайта файлик go.php выполняющий редирект
1 |
и командами веб сервера делаем редирект следующей логики
«если урл содержит /go/ тогда перекидываем его на go.php»
на NGINX это будет строчка
1 |
rewrite ^/go/(.*?) /go.php?to=$1 last; |
P.S. (добавил спустя некоторое время)
Сам себя покритикую за подобное решение — зачем поднимать PHP для редиректа, когда сам NGINX это элементарно может сделать ?
1 |
rewrite ^/go/(.*?) http://$1 permanent; |
Правда, почему то, NGINX неверно редиректит ссылки содержащие решетку (обнаружил в IE 6.0) — отписал на NGINX рассылку — решение пока не найдено.
8 комментариев на «“Форум PHPBB — внешние ссылки во внутренние”»
Походу это лучше чем плагин редирект, только куда вставить данный кон не могу понять.
А я чёт не совладал с phpbb, установил он у меня работал месяца 3-4, но так там не удобно для меня всё было. А потом началось… Начали безудержно регистрироваться и писать коменты спам роботы, что я не зна что с ними делать. В конце концов решил удалить форум нафиг, нужно было спасать сайт.
Ну phpbb всегда траблс со спамом.
форумы на сапе вроде не пользуются популярностью, хотя смотря какие у вас показатели. Может легче просто найти прямых рекламодателей, а не загонять свой ресурс под АГС.
Добрый день. Есть к автору статьи 2 вопроса. Я работаю в интернет-магазине http://www.soul-books.ru — он сделан на текстпаттерне. Тот кто его сделал не смог сделать 1 вещь: суммиовать вес товара. Возле каждого товара есть графа «масса товара». Мне нужно, чтобы при оформлении заказа вес всего выбранного товара суммировался. Можно ли это реализовать?
Пожалуйста, напишите ответ мне на email.
Буду признателен за любую помощь и подсказки.
Для чего нужно прятать внешние во внутренние?
А зачем это нужно?
А зачем это нужно?