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, ставить куку и редиректить обратно на файл, что тоже через жопу
цитата
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";
..
Тоже конечно через жопу
цитата
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
Новая тема
Ответить
Эта страница в полной версии