【问题标题】:How do I make a page visible with or without ending slash in the url?如何在 url 中使用或不使用结尾斜杠使页面可见?
【发布时间】:2013-10-08 02:33:47
【问题描述】:

我用黑色。

有:

(defpage "/welcome" [] "Welcome to Noir!")

我确实让这两个 URL 都有效:

http://localhost:8080/welcome 
http://localhost:8080/welcome/

谢谢!

编辑: 这是完整的答案。

server.clj,加起来(:use [ring.util.response :only [redirect]])

然后写:

(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))))

(server/add-middleware wrap-slash)

【问题讨论】:

    标签: clojure ring noir


    【解决方案1】:

    Noir 的路由比其他一些更严格,所以看看this question,虽然有不同的标题,但问的是同样的事情。

    【讨论】:

    • 感谢您的回答。另一个问题是关于重定向。当我输入 .../welcome/ 时,我不希望 URL 在浏览器中更改为 .../welcome。我只希望两个 URL 都可能并指向相同的内容。另一个问题的答案是否支持这一点?
    • 看来它工作得很好!非常感谢。我对我的问题进行了编辑,以回答另一个问题并添加如何使用它的上下文:(server/add-middleware wrap-slash)。这在其他答案中是缺乏的,或者至少,它不是明确的......
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 2022-01-03
    • 2012-02-08
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多