This feature is now live.
(1) if you visit a cloud object directory and do nothing else, it will show a page indicating it's a directory, instead of giving the 500 Internal Server Error page.
(2) inside a cloud object directory, if you create a cloud object named index.html or index.nb, it will be served when the directory URL is accessed. The object can be any type (including an APIFunction or Delayed or FormPage), those are just the magic names to use. You need to additionally assign appropriate permissions to those objects (read for static content, execute for server-side WL content like APIFunction).
In future we will have support for specifying any cloud object, not just ones with magic names, but for now this should serve the purpose.
Example:
dir = CreateDirectory[CloudObject["directory-index"]]
CloudDeploy[ExportForm[Panel[
Column[{
Style["How to use a Directory Index in Wolfram CLoud", Large, Bold],
"",
"1. If you visit a cloud object directory and do nothing else, it will show a page indicating it's a directory.",
"2. Inside a cloud object directory, if you create a cloud object named index.html or index.nb, it will be served when the directory URL is accessed. The object can be any type (including an APIFunction or Delayed or FormPage), those are just the magic names to use. You need to additionally assign appropriate permissions to those objects (read for static content, execute for server-side WL content like APIFunction)."
}, BaseStyle -> Directive[FontFamily -> "sans-serif"]],
ImageSize -> 700], "CloudCDF"],
FileNameJoin[{dir, "index.nb"}],
Permissions -> "Public"
]
Example: https://www.wolframcloud.com/objects/jfklein/directory-index