最近遇到这么一个问题,在windows2003下的一个web项目中的mp4不能播放了——每次点击播放的时候都会产生404的错误(如下图)。这个问题来得有些蹊跷,因为在这台服务器上其他的文件都能正常执行,比如xml、jpg、aspx等文件,唯独只有mp4文件不能从服务器正常获取到。
让这个问题具有迷惑性的前提是,这个web项目原来是在windows2000下的,但是在那台机器上都能正常播放,按理说在win2003不可能出现不能播放的情况。因为整个项目加入了ISAPI这个dll来做网址重写,一开始我怀疑是不是对这些个mp4文件做了网址重写,转到了一个本来不存在的网址,不过经过检查,发现并不是如此。
接下来才不情愿地去想,是不是iis没有把对mp4文件进行解析呢?那应该找找类似的文章看看。一找,果然被我找到了解决办法,该文指出一个关键性原则:IIS只为扩展名在MIME类型列表中注册了的文件提供服务。那么,要让IIS解析特定类型的文件,需要在其中配置相关的扩展名和对应的MIME类型。在原来的win2000的web页用firebug查看了一下,发现Content-type为application/octet-stream。也就是说,只要在iis加入后缀为mp4,mime类型为application/octet-stream的项即可。
具体如何加呢?文章也给出了方案:在iis中相应的网站上右键选择“属性”,在弹出的窗口中选择“HTTP头”选项卡,然后点击“MIME类型”,在弹出的窗口中点击“新建”,在扩展名和MIME类型的文本框中分别填入“mp4”和“application/octet-stream”,点击“确定”,保证刚才所做的修改生效即可。
在win2003的IIS做了如上所属步骤以后,再刷新原来404的页面一看,果然,一切恢复正常了。
虚拟主机用户:登陆主机管理平台进入主机管理界面—>点击 自定义Mime类型—>输入相对应的扩展名和Mime类型—>马上设置。就可以了。再刷新原来的界面,一切恢复正常。