SEO-friendly обработка реф-ссылок

mhz
На сайте с 16.05.2007
Offline
190
mhz
957

Подскажите, пожалуйста, какиие способы есть для того, чтобы реф-ссылки с сайтов-партнёров (вида href="site.ru/?partner-id=1234") сделать прямыми, при этом сохранив в сессии пользователя идентификатор партнёра?

Предполагаю, что можно id записывать в кукис, а с реф-адресов делать 301 редирект на страницу без параметра. Но не знаю, как грамотно это сделать. Сервер Apache.

Или, может быть, хорошим вариантом будет ссылка через href на страницу без параметра, а уже какими-то onclick'ами перенаправлять юзера на страницу с айдишником?

Поделитесь возможными решениями, плз.

Миниатюрный бультерьер Сахарок (http://www.bule4ka.ru/) — СДЛ о собачках. Вечные ссылки — безопасный способ продвижения и заработка. (http://miralinks.ru/users/registration/from:163)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Чтобы всё выглядело более-менее красиво, можно сделать реф-ссылки вида:

http://site.ru/partner123

А обрабатывать их как-нибудь эдак.

В .htaccess добавляем:

RewriteRule ^partner([0-9]+)$ /partner.php?ref_id=$1 [L]

В самом partner.php записываем в сессию значение ref_id:

<?

session_start();

session_register('ref_id');

$_SESSION['ref_id']=0+$_GET['ref_id'];

session_write_close();

header('Location: http://site.ru');

?>

Т.е. для пользователя при заходе по реф-ссылке всё выглядит просто как редирект на главную страницу, а в сессии при этом оказывается id-шник, которые далее уже используем, где нужно.

Лог в помощь!
Anarchist
На сайте с 23.07.2008
Offline
185
#2

А кто их смотрит, эти исходники? Можно и на js сделать всё значительно проще.. Примерно так:

<a href="http://site-to-show.biz/" onClick="this.href='http://ref-site.biz/?reflink=1'">http://site-to-show.biz/</a>
Ragnarok
На сайте с 25.06.2010
Offline
239
#3

umka правильно написал.

только: в строке

$_SESSION['ref_id']=0+$_GET['ref_id'];

лучше будет $_SESSION['ref_id']=(int)$_GET['ref_id'];

и, возможно, стоит записать рефа в куки

if(!isset($_COOKIE["ref_id"]))

{

setcookie ("ref_id", (int)$_GET['ref_id'], time()+604800, "/"); //кука на неделю

}

//TODO: перестать откладывать на потом
mhz
На сайте с 16.05.2007
Offline
190
mhz
#4

Спасибо за ответы, буду пробовать!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий