【问题标题】:Match on site root, with snap webframework匹配站点根目录,使用 snap web 框架
【发布时间】:2014-01-27 06:16:18
【问题描述】:

我正在使用 Snap 构建一个网站。

在我的路由中,如何匹配站点的根目录?

routes = [(ByteString, Handler App App ())]
routes = [("/", redirect "www.google.com")]

上述代码在(localhost:8000/) 调用时不会重定向。

【问题讨论】:

  • 尝试将“/”替换为“”——这样可以解决问题吗?另外,请参阅 ifTop 组合器以匹配 only 站点根目录。
  • wrapSite (\site -> ifTop (redirect "http://www.google.com") <|> site)
  • 好的,谢谢。但是为什么“/”不起作用
  • 查看@Rodrigo Taboada 的回答,你错过了 http://
  • @MdxBhmt 当我这样做时(“/”,渲染“about”)它也不起作用。

标签: haskell haskell-snap-framework


【解决方案1】:

如果您有一个名为index.tpl 的模板,那么"/" 处理程序将永远不会被调用。我通过反复试验发现了这一点。

【讨论】:

【解决方案2】:

您需要在 URI 中添加“http://”。这适用于我的机器:

routes = [("/", redirect "http://www.google.com")]

你也可以使用ifTop:

site :: Snap ()
site = ifTop (redirect "http://www.google.com) <|>
       route routes 

其中routes 包含您网站的剩余路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多