我想保护我的服务器中的一些文件不被下载,但我的网站需要访问它们。我想保护一些需要站点访问的字幕文件,但我不希望任何人下载它们。该网站是托管的。
例如,一些站点使用一些与用户、视频和 IP 连接的奇怪字符串。可以在我的情况下使用类似的东西。
http://www11.some-site.com:182/d/qygiatnqvsulzrqmk7n6nbhddbcscvyguy4auc3fn4nvf23jp64tjcpa/File-needed.mp4?start=0
如果您使用的是Apache,您必须在 .htaccess 文件中使用重写规则。如果您使用的是其他 HTTP 服务器品牌,您应该使用与我将在此处展示的几乎相同的逻辑,因此在这种情况下请查看您的 HTTP 服务器手册。
解释:
当您键入 www.me.com/index.php 时,PHP 系统会将echo
您使用的命令生成的内容放入代码中。
当您键入 www.me.com/myfiles/iou345yo13i2u4ybo34ybu3/passwords.txt 时,您的服务器会将文件内容放到客户端浏览器中,这将要求您将其作为文件下载或显示为页面,具体取决于文件扩展名。
现在,如果您在 .htaccess 文件中执行以下操作:
RewriteEngine On
RewriteRule ^myfiles/([^/]*)^.pdf$ /index.php?file=$1& [L]
# avoit direct access to your server directories file listing
Options All -Indexes
您将键入 www.me.com/myfiles/file123.pdf 但服务器将使用文件名作为“file”参数的内容执行 index.php,并且在代码中,您将能够检查会话查看用户是否有权下载此文件。
如果用户有权限,然后你使用 readfile() 函数将文件发送给用户,他将无法识别它来自哪里(我的意思是真实路径)。
在此处查看如何执行此操作:
在您的内容中更改为 644 权限。