将Content-Disposition标头设置为仅在特定目录中的文件上附件?

时间:2010-10-20 11:16:54

标签: apache .htaccess header

我的htaccess文件中有这个规则强制链接文件下载而不是在浏览器中打开:

<FilesMatch "\.(gif|jpe?g|png)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

有没有办法改变RegExp所以它只适用于某个目录中的文件?

由于

3 个答案:

答案 0 :(得分:12)

您可能需要将指令放在特定目录中的.htaccess文件中。

答案 1 :(得分:10)

像@gumbo说的那样,将.htaccess文件放在您想要影响的最高级别文件夹中。这些设置将逐渐渗透到子文件夹。在headers文件中使用此模块之前,您可能还需要确保已启用htaccess模块。如果未启用headers模块,则以下行将生成错误:

Header set Content-Disposition attachment

这是一个强制下载mp3文件的示例,只有在启用了header模块时才会这样做:

<IfModule mod_headers.c>
    <FilesMatch "\.(mp3|MP3)$">
        ForceType audio/mpeg
        Header set Content-Disposition "attachment"
        Allow from all
    </FilesMatch>
</IfModule>

注意:它不启用模块,如果未启用模块,它只会忽略IfModule标记内的任何内容。

要启用apache模块,您需要编辑httpd.conf文件,或者在wamp服务器中,您可以单击wamp tray图标并选择“Apache - &gt; Apache Modules - &gt; headers_module”或确保选中它

答案 2 :(得分:2)

将其放在<Location>指令中,和/或修改正则表达式以排除斜杠或适当。