【问题标题】:Apache 2.4 set mime type of file without extensionApache 2.4 设置不带扩展名的文件的 mime 类型
【发布时间】:2015-06-06 12:47:15
【问题描述】:

我已在 RedHat 6.4 服务器上从 Apache 2.2 升级到 2.4,但遇到了 mime 类型的问题。

Apache 有一个DefaultType Directive。在 Apache 2.2 中,我将其设置为“text/plain”。我有一个网页,列出了给定目录中的所有文件,用户可以单击查看文件。该目录包含所有类型的不同文件扩展名和一些没有扩展名的文件。单击文件时,它将在格式良好的新窗口中打开。没有任何代码可以做到这一点。严格来说,是浏览器打开文件并根据其内容类型决定要做什么。

该指令已在 Apache 2.4 中禁用。 Apache 文档网站指示用户使用 mime.types 配置文件和 AddType Directive 来配置媒体类型。

我的问题是如何将“text/plain”mime 类型分配给没有扩展名的文件?在 Apache 2.2 中,默认情况下这些文件将通过 DefaultType 指令被赋予“text/plain”内容类型。在 Apache 2.4 中,我无法弄清楚如何做到这一点,因为我不能再使用这个指令了。我不想使用 ForceType Directive,因为它会覆盖其他已定义的 mime 类型。

我可以创建一个 php 包装器来加载文件并分配内容类型,但我更愿意将逻辑保留在所有其他 mime 类型定义所在的 apache 中。

任何帮助将不胜感激。如果需要更多信息,请告诉我。

【问题讨论】:

    标签: apache mime-types mime


    【解决方案1】:

    仅限无扩展名的文件

    此解决方案仅影响无扩展名、静态提供的文件:(信用 Eugene Kerner

    <FilesMatch "^[^.]+$">
        ForceType text/plain
        </FilesMatch>
    

    任何未知内容

    这会影响任何在没有Content-Type 标头的情况下传输的响应。换句话说,它模仿了旧的DefaultType 指令的行为:

    Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}"
    

    这里应该可以使用setifempty 而不是-z 表达式。但它失败并覆盖每个响应中的标头,无论是否为空。我不知道为什么。 Eric Covener 说这是因为“直到最后一秒”才添加 Content-Type 标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2010-10-03
      • 2010-12-09
      • 1970-01-01
      相关资源
      最近更新 更多