metosin / reitit

A fast data-driven routing library for Clojure/Script

Home Page:https://cljdoc.org/d/metosin/reitit/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Resource handler: serve index file without a redirect

philipmw opened this issue · comments

I am using ring's resource handler (ring/create-resource-handler) to serve a Vite application. Vite builds the application as index.html and other files in the same distribution directory. I rely on the resource handler's support for index files to serve this application. However, the resource handler's index files support doesn't work quite like I expect or would like.

When I request /, this handler responds with an HTTP 302 redirect to /index.html. This results in an undesired customer-visible URL. I want index.html to be an implementation detail, and for the resource handler to serve the content of index.html in response to GET / without a redirect. This would be consistent with how Apache httpd's mod_dir works; see default for DirectoryIndexRedirect directive.

Can you suggest how I can achieve the desired behavior of serving index.html transparently on GET /?

Some options I see:

  1. Create a custom route for just /index.html that serves my file directly, with the existing resource handler as a fallback for other routes. I imagine then I'd need to disable conflict resolution, which doesn't sound good.
  2. Add a configuration parameter to the ring resource handler to support the equivalent of apache httpd's DirectoryIndexRedirect options. Do you think this would be a good idea?