PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-如何在Apache中同时重写和设置标头大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个图片目录,可以直接在浏览器中交替查看,而其他时间则可以下载.

所以,说我有一个文件/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解决方案.

解决方法:

简单的PHP解决方案:

download.PHP

header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename='.$_GET['img']);
readfile('gallery/'.$_GET['img']);

.htaccess

<Directory /var/www/download>
    RewriteENGIne on
    RewriteRule (.*)$/download.PHP?img=$1
</Directory>

大佬总结

以上是大佬教程为你收集整理的php-如何在Apache中同时重写和设置标头全部内容,希望文章能够帮你解决php-如何在Apache中同时重写和设置标头所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: