2012-03-23 2 views
1

Я работаю над решением проблемы, при которой пользователи могут получить доступ к изображениям (в данном случае файлам PDF), хранящимся в папке с корня сервера. Обычно мое приложение проверяет пользователей через PHP-скрипты и сеансы. То, что сейчас не происходит, - это предотвращение потенциального доступа пользователей к файлам PDF без регистрации.Защита изображений от прямого доступа путем проверки текущей сессии PHP с помощью mod_rewrite

Решение, которое я ищу, должно (я думаю) должно быть связано с Apache. Я видел интересное решение, используя RewriteMap & RewriteRule, однако в этом примере был помещен его в файл .htaccess в каталоге PDF. Невозможно сделать это с помощью Apache (ошибка: RewriteMap не разрешено здесь). Я считаю, что директивы rewrite должны войти в мой httpd.conf, к которому у меня есть доступ.

Так пример я нашел (что привело к 'RewriteMap здесь не допускается') здесь: RewriteEngine На RewriteMap Auth PRG: auth.php RewriteRule $ (*.) {Auth: $ 1}

auth.php просто проверяет сеанс PHP и перенаправляет на скрипт входа в систему, если это необходимо.

Я читаю, что я должен разместить это в своем httpd.conf. Как бы я указал, что RewriteMap должен появляться только в определенном каталоге (включая подкаталоги)?

+0

заимствование из шаблона MVC, вы можете перенаправить все запросы на файл начальной загрузки, а затем в зависимости от разрешений вы можете либо загрузить запрошенный файл, либо файл по умолчанию. – Moses

+0

@Moses - вот что я здесь более или менее собираюсь. У меня не было времени исследовать/тестировать конфиги apache после публикации моего вопроса, поэтому я все еще придерживаюсь того, как правильно перенаправить трафик. –

ответ

0

1-й, убедитесь, что вы должны поместить это прямо в httpd.conf. В системе Debian, например, у вас есть 1 файл на VirtualHost (а VirtualHost обычно является веб-сайт) Таким образом, вы должны поставить RewriteMap в «директории», как это:

<Directory /full/path/to/your/pdfs> 
    RewriteEngine on 
    ... 
</Directory>