Мы хотим создать какой-то API, где результаты в формате JSON генерируются с помощью .php
файлы.
Веб-папка выглядит так
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: text/html
,
Что может вызвать это?
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
Других решений пока нет …