【问题标题】:Apache ignoring mime-typeApache 忽略 mime 类型
【发布时间】:2013-08-24 09:06:09
【问题描述】:

我有一个页面正在使用 JWPlayer 来提供多种格式选择(mp4、m4v、ogv、webm)的视频。但是,当从 Firefox (23.0.1) 或 PHP curl 访问页面时,Apache 会返回一个标头,将 content-type 指示为 text/plain。 Firefox(和更新的 IE 版本,除非在兼容模式下)不会播放视频。我尝试在mime.typeshttpd.conf 和目录中的.htaccess 文件中添加 mime 类型。

mime.types

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、virtualhost 和.htaccess 中的建议尝试了FilesMatchForceType 指令。在中间人缓存的情况下尝试重命名文件并更改链接以匹配。直接转到 URL 下载视频并允许在桌面播放器中正常播放。

【问题讨论】:

    标签: apache video mime-types jwplayer


    【解决方案1】:

    2 年后回答我自己的问题。原来是我在问题中给出的信息无法确定的问题,是一个比较简单的问题。有一个.htaccess 文件将所有请求(无论是否存在资源文件)路由到 PHP 文件,然后该文件本身处理所有文件请求,包括返回 MIME 类型,有效地绕过了我试图做的所有处理在 Apache 中。

    【讨论】:

    • 我已经离开了这份工作(哇!),但我相信通过 PHP 处理文件有一些(可能是误导的)原因。我想在这里留下这个问题并回答,以防其他人遇到同样的问题。检查并三重检查您的.htaccess 文件!请记住,可能有多个.htaccess 文件影响同一个请求。
    • 通过 PHP 传递文件服务的通常原因是调解访问控制。
    【解决方案2】:

    mod_mimeofficial documentation for AddType 中是带有前导点的文件扩展名,所以试试这个:

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

    或者试试ForceTypeFilesMatch

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

    【讨论】:

    • 我以前试过这个,但是在你建议之后我又试了一次,结果一样。我还在 Firefox 中完全清除了缓存,以确保我没有获得缓存的标头。
    • 试试ForceType 命令和一个文件指令我会添加这个。
    • 我将此添加到我的答案中。顺便说一句,如果您编辑服务器配置,请不要忘记重新启动 apache 服务器。 (.htaccess 文件不算)
    • httpd.conf.htaccess 中尝试FilesMatchForceType,结果相同
    • 尝试重命名视频和更新链接以消除 ISP 或路由器缓存干扰的可能性 - 仍然text/plain
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2013-03-14
    • 2017-11-30
    • 2013-10-05
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多