使用使用snap的Hakyll我开始在路由服务器上工作。鉴于他们的教程中的以下代码,我可以看到路由,但我想在他们自己的子域上有一些不同的应用程序,如oneapp.mysite.com。这可能使用snap或任何其他Haskell服务器吗?
site :: Snap ()
site =
ifTop (writeBS "hello world") <|>
route [ ("foo", writeBS "bar")
, ("echo/:echoparam", echoHandler)
] <|>
dir "static" (serveDirectory ".")
答案 0 :(得分: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#g:10
答案 1 :(得分:0)
谢谢你们的建议,我做到了。我没有使用snaplet,但我确实使用了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)
我还创建了一个完整代码here的要点 如需进一步的建议,欢迎您。