我正在帮助建立一个使用 Clojure 的 Noir 框架的网站,尽管我在 Django/Python 方面有更多的经验。在 Django 中,我习惯了诸如
http://site/some/url
被 302 自动重定向到
http://site/some/url/
Noir 比较挑剔,不会这样做。
自动执行此操作的正确方法是什么?由于良好的 URL 是访问站点的重要方式,而且许多用户会忘记尾部斜杠,因此这是我想添加到我的站点的基本功能。
编辑:根据@IvanKoblik 的建议,这最终对我有用:
(defn wrap-slash [handler]
(fn [{:keys [uri] :as req}]
(if (and (.endsWith uri "/") (not= uri "/"))
(handler (assoc req :uri (.substring uri
0 (dec (count uri)))))
(handler req))))