5

.doc我的服务器上的下载目录中有.zip文件。无论谁访问我的网站页面(download-file.php)只有那些用户应该能够下载这些文件,而其他人不应该。

我正在努力实现上述目标,但没有运气......

我仍然可以http://example.com/sample.doc在浏览器中输入直接文件地址(

任何人都可以分享一些想法..我应该如何实现这一目标。

先感谢您。

4

4 回答 4

13

在文档根目录的 htaccess 文件中,您可以包含以下规则:

RewriteEngine On
# you can add whatever extensions you want routed to your php script
RewriteCond %{REQUEST_URI} \.(doc|zip|pdf)$ [NC]
RewriteRule ^(.*)$ /download-file.php?filename=$1 [L]

然后在您的 中download-file.php,您可以显示您需要显示的任何内容和下载链接,您的 php 脚本可以使用php 的 readfile() 立即提供文件(参见示例链接)

于 2012-12-24T19:26:20.473 回答
3

您应该禁止访问您的文件目录,并仅提供 PHP 驱动的下载(以 PDF 为例):

数据/.htaccess(谷歌搜索):

deny from all

下载.php:

/* User access check here, prior to the following code */

$name = 'MyPDF.pdf';
$filename = 'data/pdf_12345.pdf';
header('Content-Disposition: attachment; filename="'.$name.'"');
header("Content-Type: application/pdf");
header("Content-Length: " . filesize($file));
fpassthru($filename)

当然,您可以为每个用户和每个请求设置不同的文件名,例如download.php?file=MyPDF

于 2012-12-24T19:11:49.270 回答
0

您应该能够使用类似于以下代码的方法来限制人们直接访问您的内容:

RewriteCond %{HTTP_REFERER} !^http://your_domain.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://your_domain.com$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.your_domain.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.your_domain.com$ [NC]

RewriteRule .*.(jpg|jpeg|gif|png|bmp|pdf|doc)$ http://your_domain.com/no_access.php [R,NC]

这将阻止人们直接链接您网站上的图像、pdf 或文档。然后,具有这些扩展名的文件将只能从您的站点访问。如果有人试图直接链接或访问您的文件,他们将体验到您选择让他们看到的任何内容(您放置在 no_access.php 中)。

于 2012-12-24T19:55:42.567 回答
0

如果您有专用服务器,最简单且在我看来最安全的方法是将文件存储在/var/www/之外

例如,您可以创建一个文件夹/var/webdocs/并将它们存储在那里。

于 2014-07-25T13:52:36.857 回答