【问题标题】:Custom 404 in Snap Web FrameworkSnap Web 框架中的自定义 404
【发布时间】:2013-10-11 01:56:49
【问题描述】:

我正在使用 Snap 建立一个网站。如何指定自定义 404 处理程序来捕获所有不存在的路由?

我想重新定义默认值:

No handler accepted "/asdfasdf"

谢谢

【问题讨论】:

    标签: haskell haskell-snap-framework


    【解决方案1】:

    修改路由行为的正确方法是使用wrapSite

    wrapSite (\site -> site <|> writeBS "Use your custom 404 handler" )
    

    在示例代码中,您可以在基本初始化程序中添加这一行。在 Snap Init 代码中,它将位于来自 app 函数的 do 中。


    "" 也将匹配给定的任何路线。示例:

    routes = [ ("/login",    with auth handleLoginSubmit)
             , ("/logout",   with auth handleLogout)
             , ("/new_user", with auth handleNewUser)
             , ("/static", serveDirectory "static")
             , ("",        writeBS "This if none of the others" )
             ]
    

    您可以将 "" 的处理程序更改为您的自定义 404。

    【讨论】:

    • 谢谢。很难看到这一点,因为默认应用程序默认为您提供 [("", serveDirectory "/static")]
    • 这适用于某些情况,但是使用wrapSite 函数来包装所有可能的路由会更加健壮,包括那些可能由其他 snaplets 定义的路由。它看起来像这样wrapSite (\site -&gt; site &lt;|&gt; handle404)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多