使用 .htaccess 更改 .js.php 文件的内容类型不起作用

使用 .htaccess 更改 .js.php 文件的内容类型不起作用

我想将某些文件结尾的 Content-Type HTTP 标头更改为,这样application/javascript我就不会在浏览器中收到错误或警告。我得到了.mjs.js.php.文件。后者是输出 JavaScript 代码的 PHP 脚本。.htaccess例如,我想使用文件来更改内容类型而不是 PHP 代码。

我的.htaccess文件如下所示:

AddType application/javascript .mjs
AddType application/javascript .js.php

它适用于.mjs但不适合.js.php文件。我仍然得到

Content-Type: text/html; charset=UTF-8

如何修复?

更新:

我将文件重命名file.js.phpfile.mjs.php并删除了AddType的处理程序.js.php(如建议的那样)。因此只剩.mjs下 处理程序。但我仍然text/html得到Content-Type

答案1

答案就在帖子里 Apache 配置子文件类型的选项

这不是你应该做的事情。原因如下:根据mod_mime 文档,apache 将文件名中以点开头的所有部分视为扩展名。在您提供的示例中,如果您有一个文件,例如,,default.dyn.html它将被视为.dyn 同时处理为一个.html文件。如果无法同时处理,apache 将从右到左处理扩展名。因此,您不能定义包含点的“扩展名”。

你应该做的是,仅为扩展定义“服务器解析”处理程序.dyn。这样,如果你有一个.dyn.html 文件,它将被注册到服务器解析的处理程序并到 text/html模仿类型。由于它们可以很好地共存,该文件将被解析,并将作为 html 页面提供。

相关内容