Список каталогов Apache как json

Возможно ли, чтобы список каталогов в apache возвращал json вместо html?

Я совершенно неопытен с Apache, но я просмотрел документацию для IndexOptions и mod_autoindex. Кажется, что нет встроенного способа настройки вывода.

3 ответа

Решение

Я посмотрел код в исходнике Apache в modules/generators/mod_autoindex.c и генерация HTML является статической. Вы можете переписать это для вывода JSON, просто ищите все ap_rputs а также ap_rvputs вызовите функцию и замените HTML соответствующим JSON. Это похоже на большую работу, хотя.

Я думаю, что я бы сделал это вместо этого...

В конфигурации Apache для этого сайта измените на...

DirectoryIndex ls_json.php index.php index.html

А потом место ls_json.php Сценарий в любой каталог, для которого вы хотите листинг в кодировке JSON:

// grab the files
$files = scandir(dirname(__FILE__));

// remove "." and ".." (and anything else you might not want)
$output = [];
foreach ($files as $file)
  if (!in_array($file, [".", ".."]))
    $output[] = $file;

// out we go
header("Content-type: application/json");
echo json_encode($output);

Вы можете использовать mod_dir следующим образом - создайте скрипт php и перечислите ваши каталоги, как вы хотите (задайте тип содержимого соответствующим образом).

Я написал и модуль Apache, который делает именно это

https://github.com/teknopaul/mod_upload

Проект имеет два модуля mod_jsonindex.so это тот, который вы хотите

К вашему сведению, nginx имеет встроенную индексацию json.

Другие вопросы по тегам