我试图阻止人们盗链到 PDF 和 DOC 文件。通常,我会使用这样的 .htaccess 规则来解决这个问题:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]
RewriteRule \.(pdf|doc)$ /home/ [R=302,L]
但是,其中许多文件通过 php 脚本(如 filedownload.php?id=5)链接到,然后触发 PDF/DOC 文件的下载。有没有办法通过输出文件的 mime 防止热链接到这些文件?另一种方式?
编辑 - 添加此源以显示文件的调用方式:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($fn)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fs);
echo $upload["file_contents"];
exit();
我认为您的重写规则不会知道文件的 mime 类型是什么,因为在那个阶段没有执行任何响应代码。我认为在这种情况下最好的选择是在您的 php 代码中添加一个引荐来源网址检查,如果引荐来源网址不是来自您的域,则从那里重定向。