如何解压缩 apache 匹配扩展中的响应

如何解压缩 apache 匹配扩展中的响应

我正在尝试配置 apache 以便解压缩提供给客户端应用程序的 .kmz 文件(我想避免处理额外的 js 库)。

我已启用 mod_deflate 并添加了该配置:

#kmz files handling
<FilesMatch "[^.]+\.kmz$">
    SetOutputFilter INFLATE
</FilesMatch>

响应仍处于压缩状态,客户端应用程序无法读取数据。我做错了什么?

谢谢。

答案1

mod_deflate仅支持 gzip 编码,但据我所知,.kmz 文件是 Zip 编码的:

$ file test.gz
test.gz: gzip compressed data, was "test", from Unix, last modified: Thu Nov  5 10:38:11 2020
$ file test.kmz
test.kmz: Zip archive data, at least v2.0 to extract

所以我认为你需要一个不同的输出过滤器:

ExtFilterDefine unzip-kmz \
  intype=application/vnd.google-earth.kmz \
  outtype=application/vnd.google-earth.kml+xml \
  cmd=/usr/bin/gunzip
AddOutputFilter unzip-kmz kmz

或者更简单地说:

ExtFilterDefine gunzip cmd=/usr/bin/gunzip
AddOutputFilterByType gunzip application/vnd.google-earth.kmz

这可能有效,但它没有指定输出内容类型,所以如果 Apache 没有正确理解,您将需要使用第一种形式。

笔记:

  • gunzip 将解压缩 Zip 编码的数据,但您也可以使用 unzip。
  • 确保intypeouttype参数值是适合您系统的正确内容类型。grep '\.km[lz]' /etc/mime.types将会向您显示。

相关内容