为下载同一文件的每个客户生成唯一的URL

时间:2017-08-21 13:07:35

标签: php apache .htaccess download symlink

我需要提供一个文件

example.com/realpathofthe/file.zip

对于客户,但我不想向所有客户传达相同的URL(他们可以轻松地与非客户共享URL,并且很难跟踪产品是否已交付)。相反,我在PHP中生成一个随机字符串,并希望共享这样的URL:

example.com/download/djbf6xu83/file.zip

每个客户都会有所不同。

问题:我应该为每个客户生成符号链接,以将随机字符串路径链接到服务器上实际文件的路径吗?
或者在.htaccess中使用RewriteRule吗?但是如果以这种方式完成(即将/download/*/file.zip重写为实际文件),所有随机字符串将链接到同一文件。这不好,因为非客户可以自己生成下载链接。 如何正确处理?

注意:我想尽可能避免PHP在交付之前必须处理千兆字节的文件数据(通过file_get_contents())。我想(如果我错了,请纠正我)服务器让Apache分发文件会更轻。

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。这是我的建议。 创建一个文件,说__init__()并将下载代码作为HTTP GET variable传递。所以它会说/download.php之类的东西,同时为数据库中的每个客户生成和存储代码,并在有人打开/download.php?code=abcdef时检查代码是否存在。易于跟踪,而不是创建复杂的目录结构。