我有一个简单的网页,其中包含一个托管html5视频的div。播放的视频是在URL的GET中定义的,例如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">
,但仍拒绝加载。
发布后很快我意识到了我的问题,标记的src缺少/,使路径相对。我不知道我怎么想念它。我一定太专注于思考这是一个Nginx问题,而不是一个简单的HTML问题。