我的服务器上的下载目录中有.doc
和.zip
个文件。
无论是谁访问我的网站页面(download-file.php)
,只有那些用户应该能够下载这些文件而其他用户不应该。
我正努力实现上述但没有运气......
我仍然可以将直接文件地址(http://example.com/sample.doc
)放入浏览器中,我可以下载我不想要的内容..即使有人在任何网站上提供上述文件的链接,然后也应该下载没有发生。
任何人都可以分享一些想法......我应该做到这一点。
提前谢谢。
答案 0 :(得分:12)
在文档根目录中的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's readfile() (see link for examples)
答案 1 :(得分:3)
您应该禁止访问您的文件目录,并且仅提供PHP驱动的下载(例如PDF格式):
data / .htaccess(googled):
deny from all
download.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
答案 2 :(得分: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中)。
答案 3 :(得分:0)
如果您有专用服务器,最简单的,我认为最安全的方法是将文件存储在 / var / www /
之外您可以创建一个文件夹 / var / webdocs / 并将其存储在那里。