I have a static file called index.html that I\'d like to serve when someone requests /. Usually web servers do this by default, but Compojure doesn
Recently I discovered that @amalloy's answer doesn't work when the Clojure/Compojure app is run under Jetty or Tomcat as a .war. In this case :path-info needs to be updated. Also, I think this version will handle any route, not just the "root" route.
(defn- wrap-dir-index [handler]
(fn [request]
(handler
(let [k (if (contains? request :path-info) :path-info :uri) v (get request k)]
(if (re-find #"/$" v)
(assoc request k (format "%sindex.html" v))
request)))))
See also: https://groups.google.com/forum/#!msg/compojure/yzvpQVeQS3w/RNFkFJaAaYIJ
UPDATED: Replaced example with a version that works.