Расширенный mod_rewrite. Нужна помощь ГУРУ!

dr_DOT

Guest
Расширенный mod_rewrite. Нужна помощь ГУРУ!

Огромная просьба помочь. Вопрос больше к знатокам Apache и mod_rewrite.

Задача не совсем стандартная, заключается в следующем, нужно не дать скачивать с сервера файлы с прямых ссылок. ОСНОВНАЯ ОГОВОРКА! средствами одного mod_rewrite perl и php не поддерживается, а проверка по HTTP_REFERER не годится т.к. ссылка должна быть действительна в течении 24 часов, не взирая на от куда я по ней кликнул.

Реализация видится при помощи файла - флажка, который будет, находится на сервере определенное время, и находится в определенной директории. Ссылка на файл будет выглядеть следующим образом: http://server.ru/id-flag/dir/file.zip где id-flag имя существующего на сервере файла - флажка. Долго пытался состряпать это правило сам, но что-то не выходит, вот что думается, вероятно, не правильно.

RewriteEngine on
RewriteRule ^([a-z0-9]{10})\/ $1 [C,E=FlagFile:$1]
RewriteCond flag/%{ENV:FlagFile} -f
RewriteRule ^(.*) dl/a.txt

ПОМОГИТЕ кто может, а то приходится платить не за своих пользователей.
 

PilotV

Guest
Предлагаю такой вариант:

dl - папка с файлами
dl/flag - папка c ключами

Правильный доступ к файлу dl/file.ext:
/1234567890/file.ext
файл dl/flag/1234567890 должен существовать

.htaccess:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/dl/flag/$1 -f
RewriteRule ^([a-z0-9]{10})/(.+)$ /dl/$2 [NC,L]
# Запрет прямого доступа к dl:
RewriteCond %{THE_REQUEST} "^GET */dl/" [NC]
RewriteRule ^ / [NC,L,F]
 

dr_DOT

Guest
Огромное спасибо, и благодарность!

Не знал что в переменные $1... и т.д. по умолчанию записывается путь, действительно все работает просто замечательно.
 

PilotV

Guest
Туда ничего по умолчанию не записывается, туда записывается то что сгруппировано в скобки.
 
Сверху