Apache 2.4设置没有扩展名的mime类型的文件

时间:2015-04-01 18:28:03

标签: apache mime-types mime

我已经在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包装器,但我更愿意将逻辑保存在apache中,其中所有其他mime类型定义都位于其中。

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

1 个答案:

答案 0 :(得分:9)

仅限无扩展文件

此解决方案仅影响无扩展,静态提供的文件:( credit 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标题未添加到“最后一秒”。