您可以在 .htaccess 中添加类似的内容:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^/files/(.+)\.zip$ path/to/phpscript.php?file=$1.zip [L,NC,QSA]
这会将文件的所有请求重定向到该脚本。您可以对任何用户数据进行逻辑检查,然后设置标头 Content-Type、文件名,并将文件的流读入浏览器。
我需要提一下路径(在这种情况下“/files/”不应该存在。您可能希望将文件实际保留在公共网络之外并创建指向 /files/NAME 的所有文件的链接.EXT
最后,该代码仅适用于 ZIP,您可以执行以下两个示例。 First 将仅针对一系列文件扩展名运行。第二个将获取 /files/ 路径之后的任何文件。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^/files/(.+)\.(zip|pdf|exe|msi)$ path/to/phpscript.php?file=$1.$2 [L,NC,QSA]
第二:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^/files/(.*)$ path/to/phpscript.php?file=$1 [L,NC,QSA]
然后您需要创建一个脚本“phpscript.php”,如下所示:
<?php
$file = $_GET['file'];
$path = "secret/non-webpublic/path/";
if( is_file($path . $file) )
{
//Check if USER can view file
}
else
{
header("HTTP/1.0 404 Not Found");
die();
}
?>
类似的东西。