Apache 2.4如何设置没有扩展名的文件的MIME类型

17
我在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指令,因为它会覆盖其他已定义的MIME类型。
我可以创建一个php包装器来加载文件并分配内容类型,但我更喜欢将逻辑保留在apache中,其中所有其他MIME类型定义都位于其中。
如果需要其他信息,请告诉我。任何帮助将不胜感激。
1个回答

18

仅限没有扩展名的文件

此解决方案仅影响没有扩展名且静态服务的文件:(来源: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头部“直到最后一刻才被添加”。

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