Принудительная загрузка с помощью 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>
очистите браузер и проверьте его.