为了账号安全,请及时绑定邮箱和手机立即绑定

在htaccess中使用<filesMatch>强制下载

在htaccess中使用<filesMatch>强制下载

冉冉说 2019-09-03 19:35:39
我正在尝试强制下载一个文件夹的所有文件。页面上的链接如下所示<a href="http://example.com/uploads/documents/file.pdf">Click to download</a>而且我的.htaccess中有这个片段<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 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

请分别查看FilesMatch和Files的文档。它明确指出


本节中给出的指令将应用于具有与指定文件名匹配的basename(filename的最后一个组件)的任何对象。


这意味着在您的示例中它匹配file.pdf。你的第二个例子*.*匹配file.pdf,但你的第一个例子.*uploads/documents.*没有。它实际上永远不会匹配,因为它包含一个斜杠,用作目录分隔符。


如果可以编辑apache配置

您应该在指令中附上<Files *.*>或<Files *.pdf>(取决于您要强制下载的内容)Location:


<Location "/uploads/documents/">

    <Files *.*>

        ForceType application/octet-stream

        Header set Content-Disposition attachment

    </Files>

</Location>

如果你不能编辑apache配置

不幸的是,.htaccess文件中不允许使用Location指令。只需在/uploads/documents/目录中创建一个.htaccess即可。


查看完整回答
反对 回复 2019-09-03
?
慕神8447489

TA贡献1780条经验 获得超1个赞

搜索更多信息,找到此代码:


<FilesMatch "\.(mov|mp3|jpg|pdf|mp4|avi|wmv)$">

   ForceType application/octet-stream

   Header set Content-Disposition attachment

</FilesMatch>

为我工作。


查看完整回答
反对 回复 2019-09-03
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

如果您不使用- 文件名,此代码是完美的 !


例如,对于name-1.mp3,请更改为name1.mp3


<FilesMatch "\.(mp3|avi)$" >

    ForceType application/octet-stream

    Header add Content-Disposition "attachment"

</FilesMatch>

清除浏览器并进行检查。


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 979 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信