apache - 是否可以使用 .htaccess 和特定的 GET 请求(Dropbox 样式)强制下载?

标签 apache .htaccess

我想知道是否可以使用 .htaccess 强制仅在存在特定 GET 变量时才下载文件,就像 Dropbox 那样。

示例:

http://www.domain.com/file.mp4

服务器只提供文件服务,而:

http://www.domain.com/file.mp4?dl

强制浏览器下载文件。

PS:在我的情况下,将 PHPreadfile() 结合使用并不是一个可行的选择。谢谢。

最佳答案

FilesMatch 的模式与查询字符串不匹配,仅与正确的文件名匹配。

但是,您可以使用 mod_rewrite 模块、%{QUERY_STRING} 变量和 T flag :

RewriteCond %{QUERY_STRING} dl
RewriteRule .*\.mp4 - [T=application/octet-stream]

或者,如果您的 Apache > 2.3(我认为),您可以使用 If directive ,这更干净:

<FilesMatch "filepattern.mp4">
   <If "%{QUERY_STRING} =~ /dl/">
      ForceType application/octet-stream
      Header set Content-Disposition attachment
   </If>
</FilesMatch>

第一个解决方案已更新。

关于apache - 是否可以使用 .htaccess 和特定的 GET 请求(Dropbox 样式)强制下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760189/

相关文章:

PHP 将警告设置为致命

Apache mod_rewrite 内部到不同的端口

apache - 在Web服务器上使用随机文件夹名称来限制对其的访问-不好的主意吗?

.htaccess - Vary Accept-Encoding header 不起作用

WordPress 永久链接因虚拟主机而失败

php - Postgres数据库上传错误 "No server supplied!"

apache - Hive - 将 select 语句中的指定值插入到表和分区值中

regex - 缺少参数时重写 URL

PHP .htaccess 重写搜索词

.htaccess - 使用.htaccess从不同文件夹加载文件