我们想创建某种api,其中使用.php
文件生成json格式化结果。
网络文件夹看起来像
api
├── .htaccess
└── foo
├── bar.php
└── baz.php
bar.php
和baz.php
是php文件,在查询中生成json格式的回复。
此类文件(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-type:text/html
。
导致这种情况的原因是什么?
答案 0 :(得分:2)
PHP有一些值,包括default_mimetype
。当Apache服务器生成.php
页面时,它首先设置application/json
mime-type,但是当PHP引擎启动时,标题会被修改回text/html
。您可以通过向.htaccess
添加其他规则来设置此项:
#All php files return JSON formatted text.
AddType application/json json php
php_value default_mimetype application/json