4

使用使用 snap 的 Hakyll 我开始在路由服务器上工作。鉴于他们教程中的以下代码,我可以看到路由,但我希望在他们自己的子域上拥有一些不同的应用程序,例如 oneapp.mysite.com。这可以使用 snap 或任何其他 Haskell 服务器吗?

site :: Snap ()
site =
    ifTop (writeBS "hello world") <|>
    route [ ("foo", writeBS "bar")
          , ("echo/:echoparam", echoHandler)
          ] <|>
    dir "static" (serveDirectory ".")
4

2 回答 2

1

我以前没有这样做过,但这是我会尝试的:

使用该wrapSite功能有条件地使用您的子域的路由,您可以测试请求哪个子域fmap rqServerName getRequest

http://hackage.haskell.org/packages/archive/snap/0.11.0/doc/html/Snap-Snaplet.html#g:7 http://hackage.haskell.org/packages/archive/snap-core /0.9.2.2/doc/html/Snap-Core.html#g:5 http://hackage.haskell.org/packages/archive/snap-core/0.9.2.2/doc/html/Snap-Core.html#克:10

于 2013-02-06T01:16:55.223 回答
0

谢谢两位的建议,我做到了。我没有使用 snaplets,但我确实使用fmap rqServerName getRequest了和if-then-else语句。这是一段代码。

skite :: Snap ()
skite = do
    req <- fmap rqServerName getRequest
    routes req
  where
    routes req =
        if (req == "www.site1.ro") then (site1) else pass <|>
        if (req == "site1.ro") then (site1) else pass <|>
        if (req == "www.site2.ro") then (writeBS req) else pass <|>
        if (req == "site2.ro") then (writeBS "Nowhere to be found") else pass <|>
        ifTop (writeBS req)

我还在这里创建了一个包含完整代码的要点, 欢迎您提供进一步的建议。

于 2013-02-22T08:11:33.277 回答