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

Don*_*ply 16 apache .htaccess header

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

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

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

谢谢

Gum*_*mbo 13

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

  • 哈!是! 这一定是解决方案,该死的我的灵活性! (5认同)

TxR*_*gex 10

就像@gumbo说的那样,把.htaccess文件放在你想要影响的最高级文件夹中.这些设置将逐渐渗透到子文件夹.您可能还希望headershtaccess文件中使用该模块之前确保该模块已启用.如果未启用标头模块,以下行将生成错误:

Header set Content-Disposition attachment
Run Code Online (Sandbox Code Playgroud)

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

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

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

要启用apache模块,您需要编辑httpd.conf文件或在wamp服务器中单击wamp tray图标并选择"Apache - > Apache Modules - > headers_module"或确保选中它.