Принудительная загрузка с помощью htaccess в WWW root

Я пытаюсь принудительно загрузить все файлы одной папки.

ссылка на странице выглядит следующим образом

<a href="http://example.com/uploads/documents/file.pdf">Click to download</a>

и у меня есть этот фрагмент в моей .реврайт

<filesMatch ".*uploads/documents.*">
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</filesMatch>

Я уже знаю, что 2 строки внутри тега работают, потому что он работает, когда я ставлю .htaccess непосредственно внутри папки, где я хочу принудительно загрузить следующий код:

<Files *.*>
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</Files>

кажется, есть что-то, что я не понимаю о тег filesMatch.

3 ответов


пожалуйста, посмотрите документацию для FilesMatch и файлы, соответственно. В нем четко указано

директивы, приведенные в этом разделе, будут применяться к любому объекту с базовым именем (последний компонент filename), соответствующим указанному имя файла.

это означает, что в вашем примере матчей против file.pdf. Ваш второй пример *.* игр file.pdf, однако, ваш первый пример .*uploads/documents.* тут не. На самом деле он никогда не может совпадать, поскольку он содержит косую черту, которая используется в качестве разделителя каталогов.

если вы можете редактировать конфигурацию apache

вы должны заключить либо <Files *.*> или <Files *.pdf> (в зависимости от того, что вы хотите реализовать скачивание) в .


поиск дополнительной информации нашел этот код:

<FilesMatch "\.(mov|mp3|jpg|pdf|mp4|avi|wmv)$">
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</FilesMatch>

работал для меня.


этот код идеально подходит, если вы не используете - в имя файла!

например, для name-1.mp3, изменить на name1.mp3

<FilesMatch "\.(mp3|avi)$" >
    ForceType application/octet-stream
    Header add Content-Disposition "attachment"
</FilesMatch>

очистите браузер и проверьте его.