Про правильные редиректы

April 23rd, 2009 Begemot Posted in Шаровароварение

Пытаюсь считать закачки дистрибутива на сайте, механизм просто – ссылка ведет на http://clipdiary.com/download/clipdiarysetup.exe

в .htaccess мы его редирестим на наш скрипт

RedirectTemp /download/clipdiarysetup.exe _http://clipdiary.com/download/clipdiary.php

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

$Name[http://clipdiary.com/download/clipdiary_2.1.exe]
$response:location[$Name]
$response:content-type[application/downloads]
$response:content-disposition[attachment^;filename=$Name]

(это парсер, не php)

Механизм используется годами. Раньше вроде было все ок, потом я заметил, что если качать Download Master‘om то выдается ошибка “вместо файла выдается html страница и скачать файл невозможно”, но решил что трабла у меня (странный я, да?). А поскольку качаю я обычно броузером то ошибка глаза не мозолила, но потом пожаловался пользователь…

Вообщем проблема решилась благодаря коллективному разуму swrus’a и особенно Александру. В кратце, что нужно сделать

1. Перейти на использование mod_rewrite, для этого заменить

RedirectTemp /download/clipdiarysetup.exe _ttp://clipdiary.com/download/clipdiary.php

на (в файле /download/.htaccess)

Options +FollowSymlinks
RewriteEngine on

RewriteRule clipdiarysetup.exe clipdiary.php   [QSA]

2. Перестать выдавать content-type и content-disposition,  response:location – вполне достаточно

Теперь все работает как часы.

p.s. Как тяжко иметь много сайтов, везде менять запаришся 🙁

Related:

7 Responses to “Про правильные редиректы”

  1. А сам clipdiary.php можно заполучить? 🙂

  2. Кроме тех 4 строчек которые есть в посте, там просто 1 запрос к базе данных, увеличение счетчика – ничего интересного

  3. неправильная организация процесса или неправильная интерпретация ДМ.. кстати, они же связались с тобой – какой результат?

  4. лучше переписать нормально..

  5. это не то что бы “Нормально”, это как у других 😉

  6. У описанного метода есть следующие недостатки:
    1. Счетчик срабатывает даже если файл не был докачан до конца.
    2. Файл можно скачать непосредственно в обход скрипта.
    Как их обойти сам не знаю.

  7. Цели посчитать все идеально – нету, так примерно прикинуть сколько качают, увидить всплески…