Haskell 主机名无关的应用程序
这是一个非常简单的问题:如何运行可以同时处理多个主机的YesSOD应用程序 默认的Yesod设置可以处理来自任何主机的传入连接,但所有URL都是以Haskell 主机名无关的应用程序,haskell,vhosts,yesod,Haskell,Vhosts,Yesod,这是一个非常简单的问题:如何运行可以同时处理多个主机的YesSOD应用程序 默认的Yesod设置可以处理来自任何主机的传入连接,但所有URL都是以approt前缀呈现的。如果有存储当前域的方法使其可供该函数使用,则可以重写YesSOD实例声明中的joinPath,但实际上没有 上描述的方法可以工作,但非常粗糙,因为它强制路由使用额外的域参数(因为我没有一组静态域来匹配)。出于实际目的(因为我有很多路由,其中一些是独立于域的),最好有一个不涉及路由的解决方案,因为仍然可以从处理程序函数中的WAI请
approt
前缀呈现的。如果有存储当前域的方法使其可供该函数使用,则可以重写YesSOD实例声明中的joinPath
,但实际上没有
上描述的方法可以工作,但非常粗糙,因为它强制路由使用额外的域
参数(因为我没有一组静态域来匹配)。出于实际目的(因为我有很多路由,其中一些是独立于域的),最好有一个不涉及路由的解决方案,因为仍然可以从处理程序函数中的WAI请求信息获取主机名
我使用需要绝对URL的东西(例如电子邮件、RSS、XML API),因此approt=”“
不是一个选项
我不知道也不可能知道编译时需要支持的所有主机名
<> P>这样,我如何渲染URL,使它们使用传入请求的主机名,而不是<代码>近似< /COD>变量>?/P> < P>一种方法是将基础域名包括在基础类型中,并使用一个中间件,根据请求将其分发到适当的应用程序,必要时生成新的应用程序。但是,这感觉太重了 我想让Approt保持原样,因为它适合一般情况,但也许我们可以添加一个额外的方法ApprotRequest,它也将被赋予
请求
值。我想把这个讨论移到列表上
更新:Git中已经存在的更改:我将关注讨论,并希望在回购协议中有解决方案后(针对其他用户)更新此答案。谢谢