如何在Compojure / Luminus应用程序中重定向301 http?

时间:2016-05-30 08:33:57

标签: redirect clojure compojure ring luminus

我在Compojure / Luminus应用程序中有一个动作:

(defn my-page1 [id]
  (layout/render "my_page.html" 
    (let 
      [item (db/get-single-item {:id id})]

      ; this throws an exception
      ; if .....
      ; redirect "fdsfdsfd" :status 301

      { :my-item item})))

如何检查某些条件以及是否为真,然后重定向到http状态为301的新网址? 我应该在哪里放入我的代码,如何进行重定向?

1 个答案:

答案 0 :(得分:0)

您的layout/render函数会返回包含HTML正文内容的完整HTTP 200响铃响应。您需要返回重定向响应,而不是layout/render函数生成的响应:

(defn my-page1 [id]
  (if (some-condition)
    (layout/render ...)
    (ring.util.response/redirect "http://elsewhere.com/" 301)))