Php .htaccess.mp4热链接移动视频无法播放

Php .htaccess.mp4热链接移动视频无法播放,php,html,.htaccess,hotlinking,Php,Html,.htaccess,Hotlinking,大家好,我有很多视频,用户应该只能在带有html5标记的videos.php页面上看到。当您直接访问mp4文件时,它会将您重定向到主页。使用下面的代码可以很好地工作 我使用了以下代码: 然而,在任何移动设备上,重定向都可以工作,但一旦我实施了新规则,视频就停止播放。所以我从某处找到了这段代码,希望它能起作用: # for android/ipad/iphone/BlackBerry/Nokia/Samsung/Windows Phone RewriteCond %{HTTP_USER_AGENT

大家好,我有很多视频,用户应该只能在带有html5标记的videos.php页面上看到。当您直接访问mp4文件时,它会将您重定向到主页。使用下面的代码可以很好地工作

我使用了以下代码:

然而,在任何移动设备上,重定向都可以工作,但一旦我实施了新规则,视频就停止播放。所以我从某处找到了这段代码,希望它能起作用:

# 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]

如果有人能帮我理解为什么视频不能播放热链接,我将不胜感激

所以在尝试了所有方法之后,我找到了解决问题的方法。我没有使用.htaccess,而是执行了以下操作:

为视频创建唯一的文件夹名称。e、 g.KV93BGYFQW9024J所以url将指向视频:您可以每天重新创建它,并将其保存在数据库中作为参考

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就会用完。如果您对本主题有任何补充,我们将不胜感激。

也许这些手机也不会像您期望的那样发送推荐人?此外,许多移动接入提供商在您的服务器和移动设备之间大量使用自己的代理,因此您可能不会收到实际的移动用户代理字符串和/或请求的参考。最后,当通过HTTPS请求页面时使用此选项几乎毫无意义,因为所有现代浏览器在使用HTTPS时都不会发送引用。总而言之:HTTP引用程序在任何此类用途上都是毫无用处的,只是现在更是如此:-
<video id="example_video_1" controls preload="none" autoplay="false" >
      <source src="video.php?id=ISHF298YFGY25H01" type='video/mp4' />  
</video>