我想要一个像代理一样的下载

时间:2015-05-14 11:36:10

标签: php .htaccess

我希望我的用户下载文件 file.zip

来自

 www.remoteurl/file.zip 

但该文件应从

下载
 www.mydomain.com/file.zip

我希望我的服务器充当代理,将远程URL更改为mydomain。 (注意:文件不应下载到我的服务器。)

你能为此建议一个好的方法,还是为此目的甚至还有完成的脚本?

1 个答案:

答案 0 :(得分:1)

您的问题还不是很清楚,我认为您希望用户认为他们从您的服务器下载文件,而实际上下载位于远程服务器上。如果我的假设是正确的,有很多方法可以实现这一目标,这里有一个:

让我们说用户点击包含以下内容的链接:

http://www.yousite.com/myfiles/file.zip

首先,我们使用mod_rewrite将对myfiles的任何请求转发给我们的phpscript(download.php)。

<强>的.htaccess

RewriteEngine on
RewriteRule ^myfiles/(.*)$ /download.php?file=$1 [NC]

现在,我们可以$_GET file

download.php的价值

<强>的download.php

if(!EMPTY($_GET['file'])){

$url = 'http://www.remoteurl.com/'.$_GET['file'];
$path_parts = pathinfo($url);
$ext = $path_parts['extension'];
$filename = $path_parts['filename'];
header("Content-type: application/$ext");
header("Content-Disposition: attachment; filename=$filename");
echo file_get_contents($url);

}

您可能希望根据文件扩展名限制下载,您可以使用:

if (!EMPTY($_GET['file']) && preg_match('/\.(zip|txt|rar|tar|gz)$/', $_GET['file'])) {
//the rest of the code...