Используйте htaccess, чтобы разрешить загрузку файлов, только если пользовательский агент определенного типа - PullRequest
1 голос
/ 26 августа 2011

У меня есть папка с несколькими файлами zip. Я хочу отклонить все запросы на их прямую загрузку, если только пользовательский агент не соответствует указанному мной типу (например, user-agent: myuseragent)

Как это возможно с файлом .htaccess?

Отклоненные запросы будут перенаправлять в индексный файл, в то время как принятые запросы будут загружать файл.

например. если пользователь попытается http://download.com/files/myfile.zip, он будет отклонен, но если скрипт с идентификатором пользователя myuseragent получит доступ к тому же URL-адресу, он загрузит файл

Я понимаю, что пользовательские агенты могут быть подделаны. Это только мягкая защита от свободного доступа к файлам

1 Ответ

2 голосов
/ 26 августа 2011

Вот как вы можете это сделать, используя .htaccess и mod_rewrite :

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ - [F,L]

Приведенное выше правило предписывает Apache выдать ответ 403 «Отказ в доступе» для любого файла в папке /files/, если агент пользователя не равен myuseragent.

Если вы хотите выдать ответ 404 Файл не найден, замените [F,L] на [R=404,L].

Если вы хотите перенаправить такие неудавшиеся запросы на домашнюю страницу, используйте это правило (вы можете изменить перенаправление с 302 на любой другой код перенаправления, который вам нравится):

RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ / [R=302,L]
...