2016-05-30 1 views
1

私はCompojure /ルミナスアプリ内のアクションを持っている:Compojure/Luminusアプリでどのようにリダイレクト301 httpを行うことができますか?

(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で新しいURLにリダイレクトしますか? 私のコードをどこに入れる必要がありますか?どのようにリダイレクトを行うことができますか?

+0

'取得-シングルitem'が例外をスローする項目が見つからないか、それは' nil'を返すとき? – kongeor

答えて

1

layout/render関数は、HTML本文の完全なHTTP 200呼び出し応答を返します。あなたはlayout/render関数によって生成された応答の代わりにリダイレクト応答を返す必要があります。

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