文件夹限制/允许通过PHP下载文件

时间:2014-05-31 12:05:36

标签: php .htaccess mod-rewrite

我使用.htaccess阻止了对 FILES / 文件夹的直接访问,并使用以下代码

Order Deny,Allow
Deny from all

现在,无法通过直接链接访问文件。例如http://domain.com/files/anyfile.ext

但是,我现在想要的只是如果请求通过 download.php

header("location: files/link");

OR

<a href="files/link">Download</a>

然后,.htaccess应该允许文件下载(仅当引用者 download.php

我需要在.htaccess中使用什么样的规则?

1 个答案:

答案 0 :(得分:0)

您只需将文件推送给用户,如PHP手册中的这些示例所示: http://www.php.net/manual/en/function.readfile.php#refsect1-function.readfile-examples

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
   header('Content-Description: File Transfer');
   header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename='.basename($file));
   header('Expires: 0');
   header('Cache-Control: must-revalidate');
   header('Pragma: public');
   header('Content-Length: ' . filesize($file));
   ob_clean();
   flush();
   readfile($file);
   exit;
}
?>

这将自动启动文件monkey.gif的文件下载,无论Apache拒绝设置如何,都应启动下载。

请务必检查您的脚本是否可访问,并且应该可以正常运行。


希望这会有所帮助。