我正在尝试配置 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。
- 确保
intype
和outtype
参数值是适合您系统的正确内容类型。grep '\.km[lz]' /etc/mime.types
将会向您显示。