Общая схема для LAMP
1. Редирект на точку входа
Например на файл index.php в корневой директории example.com
в .htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule .* index.php?url=$0 [L]
Это позволит при обращении по адресу "example.com/test.zip" запустить скрипт обработки с example.com/index.php
Так же рекомендуется скрыть остальные папки/файлы, использовать только точку входа для работы с проектом.
2. Написать скрипт обработки для точки входа(index.php).
Проверить существование файла, сгенерировать ссылку на него, сохранить ссылку во временном хранилище(например $_SESSION). Так же сгенерировать секретный токен, через какое время пользователю сможет быть доступен данный файл и на какой промежуток времени. Для работы с БД, файлами, авторизацией, логированием и тд рекомендую использовать легкий MVC фреймворк. Например:
silex.sensiolabs.org 3.Отобразить пользователю страницу со счетчиком.
Рекомендую использовать template engine - smarty, twig & etc
4. Загрузка файла пользоватерлю.
В шаблоне template engine написать JS код которые по окончанию счетчика запускает AJAX запрос на сервер, проверяет токен, возращает файл на скачку.