大佬教程收集整理的这篇文章主要介绍了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解决方案.
解决方法:
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,请注明来意。