我需要交付文件
example.com/realpathofthe/file.zip
给客户,但我不想向所有客户传达相同的 URL(他们可以轻松地向非客户共享 URL,并且很难跟踪产品是否已交付)。相反,我在 PHP 中生成一个随机字符串并希望共享这样的 URL:
example.com/download/djbf6xu83/file.zip
每个客户都会有所不同。
问题:我应该为每个客户生成符号链接以将随机字符串路径链接到服务器上实际文件的路径吗?
或者使用 .htaccess 中的 RewriteRule 来实现此目的?但是,如果这样做(即重写
/download/*/file.zip
到实际文件),all 随机字符串将链接到同一个文件。这不好,因为非客户可以自己生成下载链接。
如何正确处理?
注意:如果可能的话,我想避免 PHP 在传递之前必须处理千兆字节的文件数据(通过
file_get_contents()
)。我认为(如果我错了,请纠正我)服务器让 Apache 分发文件会更轻松。
解决这个问题的方法有很多。这是我的建议。 创建一个文件,例如
/download.php
并将下载代码作为 HTTP GET 变量 传递。所以它会说类似/download.php?code=abcdef
,同时为每个客户生成代码并将其存储在数据库中,并在有人打开时检查代码是否存在download.php
。易于跟踪,并且不会创建复杂的目录结构。
$thefile="/dir/file.ext"
$randomstring="hw78ngsy27HSe32"
//then use .htaccess rewriterule:
download.php?what=$thefile&r=$randomstring >> /download/$randomstring.ext