防止从URL直接访问PDF文件

时间:2015-02-05 09:45:38

标签: php apache .htaccess pdf

here重定向,当有人使用直接网址访问时,我需要阻止PDF(或任何其他)文件类型的访问。

问题

假设您有一个PDF文件,您希望自己网站上的访问者下载。

但是,如果有人要复制此链接并直接从浏览器窗口调用它,或者如果他们要在另一个网站上将链接发布给您PDF,那么该文档将无法访问。默认情况下是。

我成功地将pdf文件路径隐藏在地址栏中,并且形成的网址为http://localhost/myproject/web/viewer.php?id=11&name=sample.pdf,但在控制台中,我们可以看到完整路径,如http://localhost/myproject/document/11/sample.pdf

此代码在第二次重新加载页面时成功重定向,但在我从控制台选择Open in new tab时则不行。

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(pdf) [NC]
RewriteRule .*\.(pdf)$ http://google.com/ [NC]

.htaccess下面的代码中使用,以防止访问

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(pdf)$ - [F]

不知何故,它无法正常工作。它仅在我按CTRL+SHIFT+R键时显示文件禁止消息,否则使用文件URL我仍然可以访问它。

我想阻止直接在网址栏中显示为http://localhost/myproject/document/11/sample.pdf的pdf文件

2 个答案:

答案 0 :(得分:0)

如果您有权访问数据库,也许可以将文件存储在blob字段中。这样您就可以轻松编写代码来保护文件的方式。

答案 1 :(得分:0)

您可以存储不在webroot文件夹中的PDF文件,并使用PHP返回内容。例如,用户URL将如下:

http://localhost/myproject/document.php?hash=some_hash`

并在文件document.php上,您将从$_GET参数使用file_get_contents函数获取文档哈希。同样在这种情况下,您只能允许访问一次

我希望它会有所帮助