从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文件
答案 0 :(得分:0)
如果您有权访问数据库,也许可以将文件存储在blob字段中。这样您就可以轻松编写代码来保护文件的方式。
答案 1 :(得分:0)
您可以存储不在webroot
文件夹中的PDF文件,并使用PHP返回内容。例如,用户URL将如下:
http://localhost/myproject/document.php?hash=some_hash`
并在文件document.php
上,您将从$_GET
参数使用file_get_contents
函数获取文档哈希。同样在这种情况下,您只能允许访问一次
我希望它会有所帮助