Переписать URL, чтобы получить разрывы HTML5 видео - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть простая веб-страница с div, на котором размещено видео html5. Воспроизводимое видео определяется в GET URL-адреса, например, example.com/v?v_id=test поместит test.mp4 в блок. Чтобы упростить задачу, я хочу иметь возможность набирать example.com/v/test. Поэтому я разместил этоблок местоположения в Nginx conf моего сайта:

    location /v/ {
        rewrite  ^/v/(.*)$ /v?v_id=$1 last;
    }

И в довершение всего, я хочу кнопку загрузки под видео, которая принудительно загрузит видео напрямую. Итак, под приведенным выше блоком местоположения у меня есть это:

    location ~* /video/(.+\.mp4)$ {
        add_header Content-disposition "attachment; filename=$1";
    }

Теперь, когда я перехожу прямо к example.com/v/test, видео не загружается, предупреждая меня, что нет поддерживаемого формата и типа MIME, ноесли я перейду к example.com/v?v_id=test Все работает как надо.

В чем здесь может быть проблема?

После некоторой проверки на GET вот мой HTML-код видео:

<div class="video-container">
    <video controls preload='auto'>
        <source src='video/<?php echo $v_id ?>.mp4' type='video/mp4'>
    </video>
    <a href="<?php echo("/video/".$v_id.".mp4") ?>"" class="download-btn">
        Download
    </a>
</div>

И для устранения неполадок, $v_id правильно проанализирован и доставлен в HTML страницы, выглядит как <source src="video/GH5R2.mp4" type="video/mp4">, но все равно отказывается загружаться.

1 Ответ

1 голос
/ 07 ноября 2019

Вскоре после публикации я понял, что моя проблема - в теге отсутствует символ /, что делает путь относительным. Я не знаю, как я это пропустил. Я, должно быть, слишком сосредоточился, думая, что это проблема Nginx, а не простая HTML.

...