Подсчет скачиваний статичных файлов с пом mod rewrite (?)

AlExTeam
На сайте с 12.08.2010
Offline
34
1020

добрый день.

Есть статичные файлы, типа www.com/file.zip

нужно подсчитать айпи и клики.

Не подскажете, как по-научному перенаправить эти запросы на www.com/access.php через modrewrite в htaccess?

Internet killed the video star
AlExTeam
На сайте с 12.08.2010
Offline
34
#1

никто не знает?

[umka]
На сайте с 25.05.2008
Offline
456
#2

RewriteEngine on

RewriteRule ^(.+\.(zip|rar|arj))$ /access.php?file=$1 [R=301,L]

В access.php считаете скачивания и отдаёте запрашиваемые файлы.

Чтобы не грузить php, и отдавать файлы напрямую, в access.php вешаете куку, делаете редирект обратно на запрошенный файл, а перед RewriteRule проверяете наличие этой куки.

Лог в помощь!
AlExTeam
На сайте с 12.08.2010
Offline
34
#3
'[umka:
;9633579']RewriteEngine on
RewriteRule ^(.+\.(zip|rar|arj))$ /access.php?file=$1 [R=301,L]

В access.php считаете скачивания и отдаёте запрашиваемые файлы.
Чтобы не грузить php, и отдавать файлы напрямую, в access.php вешаете куку, делаете редирект обратно на запрошенный файл, а перед RewriteRule проверяете наличие этой куки.

Действительно, заработало. Спасибо.

Токо есть один маленький недостаток. Хотелось бы, чтобы в адресной строке браузера адрес оставался тот же - www.com/file.zip

Это возможно без редиректов в самом php?

[umka]
На сайте с 25.05.2008
Offline
456
#4

Только если отдавать файл самим скриптом (access.php). Тогда "R=301," можно убрать. Но нужно ещё не забывать отдать нужные http-заголовки, типа Content-Type. И в этом случае на веб-сервер будет больше нагрузка.

AlExTeam
На сайте с 12.08.2010
Offline
34
#5

Да, действительно, робит. =))

Заголовки не потребуются, файлы очень маленькие, буду отплевывать самим php.

Thanxalot.

AlExTeam добавил 08.11.2011 в 02:09

Странное дело.

Все имена файлов переформатировываются в нижний регистр букв. А файлы-то бывают разные, и File, и filE. И zip, и Zip, и даже ZIP.

Пробовал что с NC, что без NC.

при флаге "i" виснет.

Полазит по Инету, говорят, вроде бы под виндой такой баг имеется.

AlExTeam
На сайте с 12.08.2010
Offline
34
#6

А как зделать, что если файл "not exists", то выдавать не

RewriteRule ^(.+\.(zip|rar|arj))$ /access.php?file=$1 [R=301,L]

а

....... [404,L]

???

[Удален]
#7

Начало файла access.php

<php

if (!file_exists($_GET["file"]))

{

header('Location: 404.html');

exit();

}

?>

AlExTeam
На сайте с 12.08.2010
Offline
34
#8
sasha_123:
Начало файла access.php

<php
if (!file_exists($_GET["file"]))
{
header('Location: 404.html');
exit();
}
?>

спасибо, токо, знаете ли, вопрос не по пхп.

B
На сайте с 07.12.2009
Offline
42
#9

Будет что-то типа:


RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /404.html [NC,L]

Вот так вроде.

AlExTeam
На сайте с 12.08.2010
Offline
34
#10
bndr:
Будет что-то типа:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /404.html [NC,L]

Вот так вроде.

Класс. Работает. 🍻

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