.htaccess 使用<;强制下载;文件匹配>;在htaccess中

.htaccess 使用<;强制下载;文件匹配>;在htaccess中,.htaccess,.htaccess,我试图强制下载一个文件夹中的所有文件 页面上的链接如下所示 <a href="http://example.com/uploads/documents/file.pdf">Click to download</a> 我的.htaccess中有这个片段 <filesMatch ".*uploads/documents.*"> ForceType application/octet-stream Header set Content-Disp

我试图强制下载一个文件夹中的所有文件

页面上的链接如下所示

<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>

ForceType应用程序/八位组流
标题集内容处置附件
我已经知道标记中的两行代码是有效的,因为当我将.htaccess直接放在我要强制下载的文件夹中时,它会起作用,代码如下:

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

ForceType应用程序/八位组流
标题集内容处置附件

关于filematch标记,似乎有一些我不理解的地方。

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

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

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

如果可以编辑apache配置文件 您应该将
(取决于您想要强制下载的内容)包含在
位置
指令中:

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

ForceType应用程序/八位组流
标题集内容处置附件
如果无法编辑apache配置文件
不幸的是,Location指令不允许在.htaccess文件中使用。只需在您的
/uploads/documents/
目录中创建一个.htaccess即可。

搜索更多信息时发现以下代码:

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

ForceType应用程序/八位组流
标题集内容处置附件

为我工作。

如果您不在文件名中使用
-
,则此代码非常完美

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

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

ForceType应用程序/八位组流
标题添加内容处置“附件”

清除浏览器并进行检查。

ftp根目录?你是说http?htaccess对ftp不起任何作用。您还拼错了“应用程序”(注意第二个i)请不要使用
application/octet-stream
强制下载。这是对HTTP所有优点和真实性的滥用。有什么更好的方法来强制下载文档而不是显示文档?谢谢您的解释。我看了文档,但在我看来它像是中文。确实没有办法通过htaccess文件夹来定位文件夹?我结束了使用PHP设置正确的标题来强制下载,因为我无法在文件夹中放置.htaccess,但是我终于明白了标记在htaccessI中的工作原理。我得到了错误-在节中不会发生-不要认为它还能工作。虽然您强制影响所有文件,但
指令是不必要的<代码>强制类型和
标题
就足够了。但是我更喜欢
指令,因为它在语义上更具可读性。