嗨所以我有一堆视频用户应该只能在带有html5标签的videos.php页面上看到。当您直接访问mp4文件时,它应该将您重定向到主页。使用下面的代码可以正常工作。
我使用了这段代码:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(mp4)$ - [NC,F,L]
然而,在任何移动设备上,重定向都有效,但是一旦我实施了新规则,视频就停止了播放。所以我从某个地方发现了这个代码,希望它可以工作:
# for android/ipad/iphone/BlackBerry/Nokia/Samsung/Windows Phone
RewriteCond %{HTTP_USER_AGENT} !(Android|iPad|iPhone|BlackBerry|Nokia|SAMSUNG|Windows\ Phone)
仍然没有运气,移动和桌面上的热链接工作除了移动视频文件不播放。我已恢复原始代码:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(mp4|jpg|gif)$ - [NC,F,L]
如果有人可以帮助我理解为什么视频没有使用热链接,我会很感激!
答案 0 :(得分:0)
因此,在尝试了所有内容之后,我找到了解决问题的方法。我没有使用.htaccess,而是执行了以下操作:
为您的视频创建唯一的文件夹名称。例如KV93BGYFQW9024J所以网址将是视频:(可能你每天都可以重新创建它,并将其保存在数据库中作为参考)
mydomain.com/KV93BGYFQW9024J/video.mp4
现在创建一个如下所示的php文件:
<?php
$video = "video.mp4" //Video name can be retrieved from database using a token passed to this page
$auth=true; // Authentication can be done here;
if($auth){
$path = "KV93BGYFQW9024J/";
header("Content-type: video/mp4");
header("Content-Length: ".filesize($path)); // provide file size
header("Expires: -1");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
readfile($path);
}else{
echo "Not Authenticated";
}
?>
然后最后在实际页面上你可以拥有这个
<video id="example_video_1" controls preload="none" autoplay="false" >
<source src="video.php?id=ISHF298YFGY25H01" type='video/mp4' />
</video>
令牌应该引用视频的名称。我知道这只是一次甩开,但有助于避免偷偷摸摸的用户嗅出其他视频。所有你都无法在没有身份验证的情况下直接访问视频,如果你设法抓住文件夹,你可以随机重新生成名称,每1-12小时取决于视频长度。
如果有人能给我一个更好的解决方案,我们将不胜感激。这将有助于现在我仍然看到文件夹,即使每2小时(在我的情况下)随机生成的名称是一个安全漏洞。
由于
哦,是的问题在这里感谢我的朋友,文件将完全加载到服务器ram中,这意味着如果你有一个20mb的文件,整个文件加载到ram然后流传输到用户。如果你有1000个并发连接,你就会用完ram。关于这个主题的任何补充也将受到赞赏。