什么在 Apache 中执行透明内容协商
What is performing Transparent Content Negotiation in Apache
我继承了一个相当复杂的 Java Web 应用程序,它表现出一种神秘的行为,我需要知道是什么原因造成的。
应用程序请求一个文件file.css
。如果 file.css
存在,则返回。如果 file.css
不存在,但 file.css.gz
存在,则返回 gzip 文件,其中包含以下异常 headers:
Content-Location: file.css.gz
Content-Type: application/x-gzip
TCN: choice
Vary: negotiate
TCN header 的存在意味着请求是透明协商的,很可能是由 Apache RewriteRule 协商的,但我找不到规则的定义位置。我找到并搜索了服务器上的每个 Apache 配置文件(多个文件用 Include
引用)和 commented-out 每次提到 "gzip" 或“.gz”。在所有配置文件中,只有一个 RewriteRule,它用于 SSL。重新启动 Apache 后,我仍然无法禁用该行为。
这是 Apache 的默认行为,还是看起来像某个模块的行为?
服务器的OS是RHEL 5.8,Apache是2.2。
罪魁祸首是 Apache MultiViews。这是一项令人沮丧的调查,因为配置 MultiViews 不涉及提及 RewriteRule
或它将自动替换的任何文件扩展名。您必须先了解 MultiViews,然后才能理解它是导致此行为的原因。
我继承了一个相当复杂的 Java Web 应用程序,它表现出一种神秘的行为,我需要知道是什么原因造成的。
应用程序请求一个文件file.css
。如果 file.css
存在,则返回。如果 file.css
不存在,但 file.css.gz
存在,则返回 gzip 文件,其中包含以下异常 headers:
Content-Location: file.css.gz
Content-Type: application/x-gzip
TCN: choice
Vary: negotiate
TCN header 的存在意味着请求是透明协商的,很可能是由 Apache RewriteRule 协商的,但我找不到规则的定义位置。我找到并搜索了服务器上的每个 Apache 配置文件(多个文件用 Include
引用)和 commented-out 每次提到 "gzip" 或“.gz”。在所有配置文件中,只有一个 RewriteRule,它用于 SSL。重新启动 Apache 后,我仍然无法禁用该行为。
这是 Apache 的默认行为,还是看起来像某个模块的行为?
服务器的OS是RHEL 5.8,Apache是2.2。
罪魁祸首是 Apache MultiViews。这是一项令人沮丧的调查,因为配置 MultiViews 不涉及提及 RewriteRule
或它将自动替换的任何文件扩展名。您必须先了解 MultiViews,然后才能理解它是导致此行为的原因。