php - PHP解释后设置MIME类型

标签 php apache mime-types httpd.conf

当我使用时

AddType application/x-httpd-php .phtml .pwml .php5 .php4 .php3 .php2 .php .inc .htm .html

在httpd.conf中,具有给定扩展名的文件开始由PHP解释器解释。但它们也都开始具有“text/html”MIME 类型。

我知道我可以使用

<?php header("Content-type: WHATEVER"); ?>

在文件本身中,但是是否可以在 PHP 解释扩展之后立即使用相同的 httpd.conf 分配 MIME 类型?

我想要的是一种让 PHP 解释任何文件类型的方法,无论扩展名是什么,并且不要手动编写 header ,因为它总是可以从扩展名推断出来。换句话说,如果没有分配给 PHP 解释器,我想保留文件所具有的 MIME 类型。

最佳答案

默认情况下,即。什么时候: 您的 mime.types 不包含 (*):

application/x-httpd-php php

行且您的 httpd.conf 不包含 (**):

PHPIniDir "C:/PHP/"
LoadModule php5_module "C:/PHP/php5apache2_4.dll"

(或类似的内容,具体取决于 php 的路径和 apache 版本)

.. 对 php 文件的任何请求都将返回 php 的源代码(未解释),并且 Apache 不会设置 Content-Type,因此它取决于你的浏览器如何解释它(谷歌 Mime 类型嗅探)。通常您只会在浏览器的视口(viewport)中看到源代码。

如果您的 mime.types 包含 (*) 并且 httpd.conf 不包含 (** )它会告诉 Apache 使用 Content-Type: application/x-httpd-php 为您的 php 文件提供服务。但是,它仍然是源代码,您的浏览器会询问您是否打开/保存请求的资源。

一般来说,如果您的 httpd.conf 包含(并以这种方式加载 php 模块):

PHPIniDir "C:/PHP/"
LoadModule php5_module "C:/PHP/php5apache2_4.dll"

(或类似的内容,具体取决于 php 的路径和 apache 版本)... mime.types 行:

application/x-httpd-php php

其用途与预期略有不同。它不再为 Content-Type: ... HTTP 响应提供 MIME 类型。它告诉 Apache 哪些文件扩展名应该发送到 PHP 解释器。您可以将以下行添加到 mime.types 中:

application/x-httpd-php xyz

它会告诉 Apache 将任何带有 xyz 扩展名的文件的内容发送到 PHP 解释器,但您的 HTTP 响应将具有 Content-Type: text/html 设置,而不是像您想象的那样 application/x-httpd-php

因此,您可以通过将其添加到 mime.types 中来实现您想要的目的:

application/x-httpd-php phtml pwml php5 php4 php3 php2 php inc htm html

当然,您必须加载 PHP 模块。

您可能还想阅读 mod_rewrite apache module .

即使您将带有 *xyz(无论什么)扩展名的文件解释为 PHP,您也可以使用以下方法自由更改内容类型:

header('Content-Type: ....');

关于php - PHP解释后设置MIME类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20093069/

相关文章:

apache - 具有 SNI(服务器名称指示)的 RESTful、面向 Web 的服务

php - 如何找出导致我的 PHP 应用程序挂起 Apache 服务器的原因?

apache - .htaccess 错误的 HTML 500 错误页面

javascript - Node.js路由错误: script MIME types are not allowed when 'X-Content-Type: nosniff' is given

php - 无法将数据插入我的本地 mysql 服务器

PHP SQL - 更新搜索结果的数据

php - 如何从 php 中的查询字符串传递字符串数据类型值

php - 让 Apache/PHP 根据作为 PHP 执行的文件的文件扩展名设置 MIME 类型

android - 将 mimetype 'application/octet-stream' 与 SAF 选择器一起使用适用于本地文件,但不适用于 Google Drive 中的相同文件

php - 无法找到它所在的文件。