我们想要创建某种api,其中使用.php
文件生成json格式的结果。
web文件夹看起来像
api
├── .htaccess
└── foo
├── bar.php
└── baz.php
其中bar.php
和baz.php
是生成json格式的查询回复的php文件。
这样的文件(bar.php
)看起来像:
<?php
include_once("../../utils.php");
$id = $_GET['id'];
echo json_encode(some_function($id));
?>
当然,应该指定一个标头header("Content-type: application/json");
。然而,我们希望将.htaccess
设置为这样做,这样就永远不会忘记设置内容类型,如果需要额外的头,我们可以很容易地修改它,等等。我们不希望在每个文件中都写入header(...)
。
.htaccess
看起来像:
#All php files return JSON formatted text.
AddType application/json json php
但是生成的结果仍然是mime类型:text/html
。
是什么原因造成的?
PHP有一些值,包括default_mimetype
。当Apache服务器生成.php
页面时,它首先设置application/json
mime类型,但当PHP引擎启动时,头被修改回text/html
。您可以通过向.htaccess
:添加附加规则来设置此项
#All php files return JSON formatted text.
AddType application/json json php
php_value default_mimetype application/json