mod_rewrite поможет изменить расположение содержимого на основе URI - PullRequest
4 голосов
/ 15 сентября 2009

У меня есть каталог mp3-файлов, который я хочу иметь возможность обслуживать их встроенным образом или предоставить пользователю возможность загрузки на основе URI запроса.

/ media / file1.mp3 - в этом случае я просто хочу обработать файл и позволить браузеру воспроизвести его.

/ media / download / file1.mp3 - в этом случае я хочу упростить загрузку файла для пользователя.

Я смог сделать это с помощью mod_rewrite и php (используя функции header () и readfile ()), но я бы предпочел сделать все это с mod_rewrite, mod_header и т. Д., Если это возможно.

Ответы [ 2 ]

5 голосов
/ 24 февраля 2011

IfDefine проверит переменные, установленные при запуске Apache, чтобы они не работали. Допустимая конфигурация будет:

SetEnvIf Request_URI ^/media/download/ force-download
Header set Content-Disposition attachment env=force-download

Также нет необходимости менять тип содержимого для принудительной загрузки.

2 голосов
/ 15 сентября 2009

С помощью mod_rewrite вы можете изменять только некоторые определенные поля заголовка, но к которым поле заголовка Content-Disposition не принадлежит. Вы можете изменить только поле заголовка Content-Type :

RewriteRule ^media/[^/]+\.mp3$ - [L,T=audio/mpeg]
RewriteRule ^media/download/[^/]+$ - [L,T=application/octet-stream]

И если вы хотите использовать mod_headers + mod_setenvif решение:

SetEnvIf Request_URI ^/media/download/ force-download

<IfDefine force-download>
    Header set Content-Disposition attachment
    Header set Content-Type application/octet-stream
</IfDefine>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...