我在stackoverflow上找到了一个答案,建议拒绝对该文件夹的所有访问,以防止直接访问该文件夹及其内容。然而,他们还建议php访问.HTACCESS文件禁止的任何文件都没有问题。
现在从某种意义上说,这不是直接的,因为它花了我更长时间才开始工作但仍然没有。
<?php
/*
* the folder channel is in html folder#
* the folder channel has its own .htaccess file with code like
* deny from all
*/
include("channel/150508084959b5b611e1dcf.mp4");
?>
现在我在这里尝试播放来自禁止文件夹的视频,期待它能够正常工作,因为php包含了该文件 但我只是在控制台中收到服务器错误 并在apache.log文件中我得到PHP Parse错误:语法错误,意外&#39; \ xdf&#39; (T_STRING)
<video src="channel/150508084959b5b611e1dcf.mp4" controls autoplay></video>
可能是我误解了给出的答案或apache.log文件,但我真的需要帮助。 在此先感谢,非常感谢任何帮助。
答案 0 :(得分:1)
听起来您希望使用.htaccess
限制来阻止用户通过网络请求直接访问您的内容。这些请求由Apache处理,它读取您的.htaccess
文件并强制执行其中的规则。 PHP能够绕过这些规则,因为它作为一个不同的进程运行,而不是通过Apache。
通过使用PHP,您可以执行以下操作:
<video src="video.php?id=150508084959b5b611e1dcf" controls autoplay></video>
然后,您的video.php
文件会获取id
值并使用readfile
(http://php.net/readfile)或stream_get_contents
(http://php.net/stream_get_contents)或简单文件阅读并传递内容。
然而,如果您这样做是为了尝试阻止人们直接访问您的内容,那么这并不能解决问题。人们可以只向video.php
文件发出请求以获取实际内容。你只是将一种方法替换为另一种方法。如果你真的想阻止别人,它会变得非常复杂,因为它变成了猫捉老鼠的游戏。
如果你担心的是人们链接到你的内容,你可以尝试一个简单的实现来防止热链接(https://simple.wikipedia.org/wiki/Hotlinking): https://mediatemple.net/community/products/dv/204644230/prevent-hotlinking-with-a-htaccess-file
这不会阻止那些真正投入到获取内容的人,但只是将链接放在某些HTML中会更具挑战性。