我有一个图像目录,可以直接在浏览器中查看,其他时候下载。
所以,假设我有一个文件 /gallery/gal_4254.jpg。
我想让 /download/gal_4254.jpg 触发图像的下载而不是查看它。/download 是空的,所有图像都在 /gallery 中。
我可以成功地将下载目录的请求映射到其他文件
<Directory /var/www/download>
RewriteEngine on
RewriteRule (.*)$ /gallery/$1
</Directory>
我已经可以通过设置强制下载画廊目录
<Directory /var/www/gallery/>
ForceType "image/jpg"
Header set Content-Disposition "attachment"
</Directory>
所以设置标题是没有问题的。我实际上并不希望 /gallery 有标题,只是通过 /download/ 请求 /gallery/* 被重写。
但是,我需要将两者结合起来,所以请求被映射到另一个目录中的文件,并且文件被赋予了附件头。
#does not work - just views the image like when it is viewed directly
<Directory /var/www/download>
ForceType "image/jpg"
Header set Content-Disposition "attachment"
RewriteEngine on
RewriteRule (.*)$ /gallery/$1
</Directory>
我尝试更改重写和标题部分的顺序无济于事。我认为当请求被重写到另一个目录时它会丢失标题。
关于如何在 Apache 中执行此操作的任何建议?
我意识到这也可以用 PHP 来完成,这就是为什么我在这里发布它与服务器故障。也欢迎使用 PHP 的解决方案。