Apache忽略mime类型。

5
我有一个页面,使用JWPlayer提供多种格式选择的视频(mp4,m4v,ogv,webm)。但是,在从Firefox(23.0.1)或使用PHP curl访问页面时,Apache将返回一个标头,指示content-typetext/plain。 Firefox(以及较新的IE版本,除非处于兼容模式下)将无法播放视频。我已尝试在mime.typeshttpd.conf和目录中的.htaccess文件中添加MIME类型。
video/mp4   mp4 m4v
video/ogg   ogv
video/webm  webm

httpd.conf

AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm

.htaccess

AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm

我尝试了在扩展名前加点和不加点的两种方式(据我所知,这两种方式都应该有效)。我重新启动了Apache。我确认我正在编辑正确的配置文件。但是Apache仍然返回text/plain类型。我错在哪里了?
更新:按照rekire在httpd.conf、虚拟主机和.htaccess建议的FilesMatchForceType命令进行了尝试。尝试重命名文件并更改链接以匹配中间人缓存的情况。直接访问URL可下载视频并正常在桌面播放器中播放。
2个回答

5
AddType官方文档中,mod_mime模块列出的文件扩展名前面都带有一个点号,因此可以尝试这样做:
AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm

或者尝试使用 ForceType 结合 FilesMatch

<FilesMatch "\.(mp4|m4v)$">
    ForceType video/mp4
</FilesMatch>

我之前尝试过这个,但在你建议后我又尝试了一次,结果相同。我还完全清除了Firefox的缓存,以确保我没有获取缓存的标头。 - Quentin Skousen
尝试使用ForceType命令和文件指令,我会添加这个。 - rekire
1
我在我的答案中添加了这个。顺便提一下,如果您编辑了服务器配置,请不要忘记重新启动Apache服务器。(.htaccess文件不计算在内) - rekire
尝试重命名视频并更新链接以消除ISP或路由器缓存干扰的可能性 - 仍然是“text/plain”。 - Quentin Skousen
在我的机器上可以工作,抱歉。你设置了 allowoverride all 吗? - rekire
显示剩余5条评论

4

两年多后,我回答自己的问题。问题的原因并不能从我在问题中提供的信息确定,它是一个相对简单的问题。有一个 .htaccess 文件将所有请求(包括现有资源文件和不存在的文件)都路由到一个 PHP 文件上,然后 PHP 文件处理所有文件请求,包括返回 MIME 类型,有效地绕过了我在 Apache 中尝试做的所有处理。


1
我已经离开了这份工作(呼!),但我相信有一些(可能是误导的)理由通过PHP处理文件。我想把这个问题和答案留在这里,以防其他人遇到同样的问题。检查并三重检查你的.htaccess文件!记住,可能有多个.htaccess文件影响同一个请求。 - Quentin Skousen
1
通常将文件服务通过PHP传递的原因是为了调节访问控制。 - fooquency

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接