Привет. Итак, у меня есть куча видео, которое пользователи должны видеть только на странице video.php с тегом html5. Когда вы напрямую обращаетесь к файлу 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)
По-прежнему не повезло, hotlinking на мобильных и настольных компьютерах, за исключением мобильных, видеофайлы не воспроизводятся. Я вернусь к исходному коду:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(mp4|jpg|gif)$ - [NC,F,L]
Если кто-нибудь может помочь мне понять, почему видео не играет с hotlinking, я был бы признателен!
Поэтому, пробовав все, я пришел к решению проблемы. Вместо использования.htaccess я сделал следующее:
Создайте уникальное имя папки для ваших видео. например, 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 часа (в моем случае), являясь лазейкой безопасности.
благодаря
О, да, проблема здесь благодаря моему другу, файл полностью загрузится в серверный баран, если у вас есть файл 20 МБ, все файлы загружаются в RAM, а затем передаются пользователю. Если у вас 1000 одновременных подключений, у вас не будет бара. Любые дополнения по этому вопросу также будут оценены.