Apache 将名称中带有“.var[.]”的文件视为类型映射

Apache 将名称中带有“.var[.]”的文件视为类型映射

今天上班时我遇到了一个奇怪的问题。我编写的应用程序有一个名为的 JavaScript 文件form.sales.var.js,与其他 JS 文件放在同一目录中。然而,当浏览器尝试加载 JS 文件时,服务器返回了一个500 Internal Server Error页面。Apache 日志显示了以下条目:

Syntax error in type map, no ':' in /var/www/...

— 后面跟着文件路径的其余部分和文件的内容。

我在 Google 上针对此问题进行了一些研究,发现这可能是由于文件名包含 导致的.var.,从而导致 Apache 将其视为类型映射。由于事实并非如此,因此发生语法错误。

我现在的问题是:

  1. 文档中说类型映射是文件,为什么.js文件却被视为类型映射*.var?是不是因为我的 Web 服务器配置错误,或者其他人是否可以测试他们的 Web 服务器是否对名为 的文件产生相同的错误something.var.something
  2. 为什么没有关于这个问题的文档,为什么很少报告,即使这种行为似乎从 Apache 1.3 开始就存在了?这似乎是一个更常见的问题。
  3. 类型映射是否常用?在 Apache 中禁用它们是否会导致任何可预见的问题?
  4. 解决此问题的最佳方法是什么(除了重命名文件并且不使用任何包含的文件名.var.)?

答案1

这是 Apache httpd 的一部分内容协商type-map。只需删除<Directory>或者<Location>您的 JavaScript 文件或删除MultiViews这些目录。

相关内容