![Apache 将名称中带有“.var[.]”的文件视为类型映射](https://linux22.com/image/518428/Apache%20%E5%B0%86%E5%90%8D%E7%A7%B0%E4%B8%AD%E5%B8%A6%E6%9C%89%E2%80%9C.var%5B.%5D%E2%80%9D%E7%9A%84%E6%96%87%E4%BB%B6%E8%A7%86%E4%B8%BA%E7%B1%BB%E5%9E%8B%E6%98%A0%E5%B0%84.png)
今天上班时我遇到了一个奇怪的问题。我编写的应用程序有一个名为的 JavaScript 文件form.sales.var.js
,与其他 JS 文件放在同一目录中。然而,当浏览器尝试加载 JS 文件时,服务器返回了一个500 Internal Server Error
页面。Apache 日志显示了以下条目:
Syntax error in type map, no ':' in /var/www/...
— 后面跟着文件路径的其余部分和文件的内容。
我在 Google 上针对此问题进行了一些研究,发现这可能是由于文件名包含 导致的.var.
,从而导致 Apache 将其视为类型映射。由于事实并非如此,因此发生语法错误。
我现在的问题是:
- 文档中说类型映射是文件,为什么
.js
文件却被视为类型映射*.var
?是不是因为我的 Web 服务器配置错误,或者其他人是否可以测试他们的 Web 服务器是否对名为 的文件产生相同的错误something.var.something
? - 为什么没有关于这个问题的文档,为什么很少报告,即使这种行为似乎从 Apache 1.3 开始就存在了?这似乎是一个更常见的问题。
- 类型映射是否常用?在 Apache 中禁用它们是否会导致任何可预见的问题?
- 解决此问题的最佳方法是什么(除了重命名文件并且不使用任何包含的文件名
.var.
)?
答案1
这是 Apache httpd 的一部分内容协商type-map
。只需删除<Directory>
或者<Location>
您的 JavaScript 文件或删除MultiViews
这些目录。