Search code examples
apachedirectory-listingmod-autoindex

Apache directory listing as json


Is it possible to have the directory listing in apache return json instead of html?

I'm completely unexperienced with Apache, but I've browsed the documentation for IndexOptions and mod_autoindex. It seems like there's no built in way to configure the output.


Solution

  • I looked at the code in apache source in modules/generators/mod_autoindex.c and the HTML generation is static. You could rewrite this to output JSON, simply search for all the ap_rputs and ap_rvputs function calls and replace the HTML with the appropriate JSON. That's seems like a lot of work though.

    I think I would do this instead...

    In the Apache configuration for this site, change to...

    DirectoryIndex ls_json.php index.php index.html
    

    And then place ls_json.php script into the any directory for which you want a JSON encoded listing:

    // 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);