Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Спецы mod_rewrite, подскажите
цитата
02/04/09 в 10:02
 Tee Moore
Хочется средствами mod_rewrite отслеживать людей кто откуда первый раз пришел на сайт. В куки писать HTTP_REFERER если еще нет такой куки.
Что то типа
Код:
RewriteEngine On
RewriteCond %{HTTP_COOKIE}!^.*first_referer.*$ [AND]
RewriteCond %{HTTP_REFERER} ^.*://([^:]+)$
RewriteRule ^([^:]+)$ - [CO=first_referer:%1:.домен.com:600000000:/]

Но это у меня не пытается даже работать, т.к.
Apache старый-1.3.33 и параметр СО не знает, да в самой конструкции я не уверен.
Может есть еще какой вариант повесить куку?
Вариант с JavaScript не подойдет, т.к. в первый раз могут не только страницу, но и другие типы файлов дергать(exe,zip).
цитата
02/04/09 в 10:41
 Dr.Syshalt
Последнюю строку заменить на редирект на URL, в котором будет CGI или PHP, все, что он делает - это подсовывает куку и редиректит затем на оригинальый URL, на который человек пришел.
цитата
02/04/09 в 10:48
 Tee Moore
Дык хочется без редиректа, что бы со стороны ничего не было видно
цитата
02/04/09 в 10:57
 Dr.Syshalt
Тогда только искать на modules.apache.org модуль, который умеет куки подсовывать - для старой версии. Или самому написать. Или кому-то заплатить, чтобы написали. Или проапгрейдить апач до 2.2, наконец.
Больше - никак.
цитата
03/04/09 в 00:58
 borgivan
А зачем это ваще делать через мод рерайт а не средствами пхп ?
цитата
03/04/09 в 06:53
 Tee Moore
А как можно средствами пхп подсадить куку при запросе zip или exe файла?
цитата
03/04/09 в 07:31
 renatko
Отдавать файл через php, что не есть гут.
Либо если куки нет редиректить на php, ставить куку и редиректить обратно на файл, что тоже через жопу icon_smile.gif
цитата
03/04/09 в 10:11
 Tee Moore
Пока предварительный вариант такой
.htaccess
Код:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200                   # Что бы не зациклилось
RewriteRule .* - [L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !\.(pl|cgi|png|js|css|ico)$ [NC] #Исключения
RewriteCond %{HTTP_COOKIE} !^.*first_referer.*$
RewriteCond %{HTTP_REFERER} ^.*://([^:]+)$
RewriteRule ^.*$ /cgi-bin/redir.pl [L]


redir.pl
Код:
..
print "Set-Cookie: first_referer=$ref; paht=/; expires=$cooktime\n";
print "Location: $ENV{'REQUEST_URI'}\n\n";
..

Тоже конечно через жопу icon_sad.gif
цитата
03/04/09 в 14:41
 Dr.Syshalt
Поставь mod_perl на апач и напиши все, что нужно, на нем, там не надо быть виртуозом-программистом, чтобы такое написать. Пишешь модуль, в fixup-фазе проверяешь, что куки нету, если нет - берешь реферер и суешь его в куку.

Еще вариант - можешь писать access лог формата "unique ID (см. mod_unique_id) + referer" в трубу stdin какого-нибудь скрипта. Который работает так: "такого нет в базе - запоминаем реферер, такой есть - ничего не делаем". Потом, когда тебе нужен реферер в другом месте, просто берешь из базы. Периодически записи чистятся по их timestamp'у. В этом случае тебе даже куки не понадобится.

P.S. Вот тебе еще вариация на тему 2.
http://httpd.apache.org/docs/1.3/mod/mod_usertrack.html


Эта страница в полной версии