php+mod_rewrite

buBBle

Новичок
php+mod_rewrite

Добрый день!

Необходимо реализовать контроль доступа к скачиванию файлов.
в доках по mod_rewrite http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap
обнаружил возможность обращения к скриптам при проверке url.
Идея в следующем: при обращении к файлу mod_rewrite выполнял бы скрипт,
который смотрел бы в базу и определял, можно ли скачивать.
По результатам работы скрипта mod_rewrite либо переадресовывал на нужный файл,
либо посылал нафиг.

Подскажите, как правильно настроить .htaccess для реализации такой возможности?

Этот вариант не работает:
.htaccess:
RewriteEngine On
RewriteMap qmap prg:/test.php

RewriteRule ^file.zip /${qmap:$1} [L,R]

-~{}~ 28.08.06 19:58:

Наверно не очень доходчиво объяснил задумку.
Начнем сначала.

Большинство сайтов, в которых реализован контроль доступа к скачиванию файлов используют следующий механизм: ссылка на требуемый файл отсутствует в явном виде, а вместо неё есть ссылка на пхп-скрипт, который проверяет пользователя, и если он имеет право на скчивание, читает содержимое файла и выдает его в выходной буфер.
При этом используются функции fopen(), echo(), fpassthru и т.д.
Данный подход сильно загружает веб-сервер ввиду того, что php приходится полностью "проглатывать" файл, а затем его выдавать

mod_rewrite позволяет "налету" править url пользовтеля, так что
он даже не будет знать, откуда физически скачивается файл.
В этом модуле задокументирована опция rewritemap, позволяющая обращаться к php - скриптам на этапе верификации url. поэтому возникла идея написать php-скрипт,
который бы проверял пользователя и сообщал модулю физический адрес файла.
в настройке .htaccess я не силен, поэтому прошу помочь правильно все прописать
 

Фанат

oncle terrible
Команда форума
лично я на этом форуме описания этого метода не встречал.
я думаю, тебе следует либо исследовать вопрос самостоятельно, либо обратиться в сообщество, посвящённое апачу и модреврайту.
 

romy4

invoke [brain]
ну, сперва изучить regexp.
$1 используется только если что-то ловит regexp. например
RewriteRule ^([\w]+\.zip) ...
но при подставлении в rewriterule ты не можешь брать ^file.zip, так как туда поставляется путь типа /path/to/file.zip
в таком случае надо было RewriteRule ([\w]+).zip$ /${qmap:$1} [L]
и флаг R тебе не нужен, так как он означает редирект, что сделает повторный вызов твоего же rewrite
это наметки на то, в каком направлении двигаться
 

FreeSpace

Чукча-читатель
Через .htaccess нельзя использовать RewriteMap.
В мануле по ссылке так и написано:
Context: server config, virtual host
Если это не смущает и ты "сам себе root", то думаю больше проблем не возникнет.
 

ПРЕВЕД

Новичок
В mod_rewrite можно фильтровать по заголовкам.
например, ставим куку скриптом и проверяем ее наличее/валидность в RewriteCond.
 
Сверху