Отделение поискового трафа от остального

Сегодня я расскажу как можно отделить поисковый траф от остального, если вы например хотите сливать траф с гугла в одно место, а траф с других поисковых систем куда-нибудь еще :)

Для начала разработаем функцию анализа рефера с которым пришли на скрипт редиректа

 
function parse_se($seoref)
{
	$out = array();
	$seo_info = parse_url($seoref);
	$se = @$seo_info['host'];
	$query = @$seo_info['query'];
	if(strstr($se, 'google') !== false)
	{
		$out['se'] = 'google';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if(strstr($se, 'msn') !== false)
	{
		$out['se'] = 'msn';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if(strstr($se, 'yahoo') !== false)
	{
		$out['se'] = 'yahoo';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['p']);
	}
	if((strstr($se, 'aol') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['query']);
	}
	if((strstr($se, 'netscape') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['query']);
		if($out['q'] == '')$out['q'] = urldecode(@$out['q']['s']);
	}
	if((strstr($se, 'ask') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if((strstr($se, 'starware') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['qry']);
	}
	return $out;
}

Дальше просто используем выборку по правилам (для какой SE какое правило перехода и все готово :))

 
$se_out = parse_se($ref);
switch ($se_out['se'])
{
	case 'google':
		$url = 'for google';
		break;
	case 'yahoo':
		$url = 'for yahoo';
		break;
	case'msn':
		$url = 'for msn';
		break;
	default:
		$url = 'for other se';
		break;
}

Теперь осталось соединить это все в одно целое и вуаля :)

 
<?
function parse_se($seoref)
{
	$out = array();
	$seo_info = parse_url($seoref);
	$se = @$seo_info['host'];
	$query = @$seo_info['query'];
	if(strstr($se, 'google') !== false)
	{
		$out['se'] = 'google';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if(strstr($se, 'msn') !== false)
	{
		$out['se'] = 'msn';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if(strstr($se, 'yahoo') !== false)
	{
		$out['se'] = 'yahoo';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['p']);
	}
	if((strstr($se, 'aol') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['query']);
	}
	if((strstr($se, 'netscape') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['query']);
		if($out['q'] == '')$out['q'] = urldecode(@$out['q']['s']);
	}
	if((strstr($se, 'ask') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['q']);
	}
	if((strstr($se, 'starware') !== false))
	{
		$out['se'] = 'other';
		parse_str($query, $out['q']);
		$out['q'] = urldecode(@$out['q']['qry']);
	}
	return $out;
}
$ref = @$_SERVER['HTTP_REFERER'];
//traff with referer
if($ref != '')
{
	$se_out = parse_se($ref);
	switch ($se_out['se'])
	{
		case 'google':
			$url = 'for google';
			break;
		case 'yahoo':
			$url = 'for yahoo';
			break;
		case'msn':
			$url = 'for msn';
			break;
		default:
			$url = 'for other se';
			break;
	}
}
//no ref traff
else
{
	$url = 'http://google.com';
}
header("Location: $url");
?>
 

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5 out of 5)

Loading ... Loading ...

3 Responses to “Отделение поискового трафа от остального”

  1. Абсурдный Людь Says:

    А что же Яши нету?((

  2. admin Says:

    над этим ведется работа :)
    в принципе немного модернизировать функцию parse_se() по аналогии с другими :)

  3. Костя Says:

    А практическая польза от этого есть? Зачем посылать трафик с одного поисковика в одно место, а другого в другое?

Leave a Reply