.
Место для Вашей рекламы
9 Март 2011

Форум PHPBB — внешние ссылки во внутренние

posted in Полезности, Программирование |

Достался мне проектик, целью которого заказчик поставил мне монетизацию ресурса.

Более всего страниц досталось на форум (сапа увидела в районе 3к).

Собственно первоочередной задачей я обозначил — преобразование всех существующих внешних ссылок во внутренние (для чего — думаю понятно).

Сразу к реализации:

// в 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 выполняющий редирект


и командами веб сервера делаем редирект следующей логики
«если урл содержит /go/ тогда перекидываем его на go.php»

на NGINX это будет строчка

rewrite ^/go/(.*?) /go.php?to=$1 last;

P.S. (добавил спустя некоторое время)
Сам себя покритикую за подобное решение — зачем поднимать PHP для редиректа, когда сам NGINX это элементарно может сделать ?

rewrite ^/go/(.*?) http://$1 permanent;

Правда, почему то, NGINX неверно редиректит ссылки содержащие решетку (обнаружил в IE 6.0) — отписал на NGINX рассылку — решение пока не найдено.

У нас 8 комментариев на запись “Форум PHPBB — внешние ссылки во внутренние”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 12.03.2011, Евгений said:

    Походу это лучше чем плагин редирект, только куда вставить данный кон не могу понять.

  2. 2 On 21.03.2011, Алексей said:

    А я чёт не совладал с phpbb, установил он у меня работал месяца 3-4, но так там не удобно для меня всё было. А потом началось… Начали безудержно регистрироваться и писать коменты спам роботы, что я не зна что с ними делать. В конце концов решил удалить форум нафиг, нужно было спасать сайт.

  3. 3 On 23.03.2011, доска объявлений said:

    Ну phpbb всегда траблс со спамом.

  4. 4 On 25.03.2011, счастье материнства said:

    форумы на сапе вроде не пользуются популярностью, хотя смотря какие у вас показатели. Может легче просто найти прямых рекламодателей, а не загонять свой ресурс под АГС.

  5. 5 On 25.03.2011, Dharam said:

    Добрый день. Есть к автору статьи 2 вопроса. Я работаю в интернет-магазине http://www.soul-books.ru — он сделан на текстпаттерне. Тот кто его сделал не смог сделать 1 вещь: суммиовать вес товара. Возле каждого товара есть графа «масса товара». Мне нужно, чтобы при оформлении заказа вес всего выбранного товара суммировался. Можно ли это реализовать?
    Пожалуйста, напишите ответ мне на email.
    Буду признателен за любую помощь и подсказки.

  6. 6 On 28.03.2011, zoldik said:

    Для чего нужно прятать внешние во внутренние?

  7. 7 On 26.05.2011, Жаклин said:

    А зачем это нужно?

  8. 8 On 26.05.2011, Жаклин said:

    А зачем это нужно?

Оставить комментарий

Яндекс.Метрика