2013-12-08 2 views
4

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

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

+0

Вы смотрели на [mod_dir] (Http:. //httpd.apache. орг/Docs/2,2/моды/mod_dir.html)? –

+0

Хороший улов - это именно то, что мне нужно было использовать. – Rjoss

ответ

4

Я просмотрел код в источнике apache в modules/generators/mod_autoindex.c, а генерация HTML статична. You может переписать это для вывода 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); 
+0

Это в значительной степени то, что я использовал. Это потрясающе. – Rjoss

1

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

0

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

https://github.com/teknopaul/mod_upload

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

FYI Nginx имеет встроенный JSON индексирование в

Смежные вопросы