Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 主机名无关的应用程序_Haskell_Vhosts_Yesod - Fatal编程技术网

Haskell 主机名无关的应用程序

Haskell 主机名无关的应用程序,haskell,vhosts,yesod,Haskell,Vhosts,Yesod,这是一个非常简单的问题:如何运行可以同时处理多个主机的YesSOD应用程序 默认的Yesod设置可以处理来自任何主机的传入连接,但所有URL都是以approt前缀呈现的。如果有存储当前域的方法使其可供该函数使用,则可以重写YesSOD实例声明中的joinPath,但实际上没有 上描述的方法可以工作,但非常粗糙,因为它强制路由使用额外的域参数(因为我没有一组静态域来匹配)。出于实际目的(因为我有很多路由,其中一些是独立于域的),最好有一个不涉及路由的解决方案,因为仍然可以从处理程序函数中的WAI请

这是一个非常简单的问题:如何运行可以同时处理多个主机的YesSOD应用程序

默认的Yesod设置可以处理来自任何主机的传入连接,但所有URL都是以
approt
前缀呈现的。如果有存储当前域的方法使其可供该函数使用,则可以重写YesSOD实例声明中的
joinPath
,但实际上没有

上描述的方法可以工作,但非常粗糙,因为它强制路由使用额外的
参数(因为我没有一组静态域来匹配)。出于实际目的(因为我有很多路由,其中一些是独立于域的),最好有一个不涉及路由的解决方案,因为仍然可以从处理程序函数中的WAI请求信息获取主机名

我使用需要绝对URL的东西(例如电子邮件、RSS、XML API),因此
approt=”“
不是一个选项

我不知道也不可能知道编译时需要支持的所有主机名


<> P>这样,我如何渲染URL,使它们使用传入请求的主机名,而不是<代码>近似< /COD>变量>?/P> < P>一种方法是将基础域名包括在基础类型中,并使用一个中间件,根据请求将其分发到适当的应用程序,必要时生成新的应用程序。但是,这感觉太重了

我想让Approt保持原样,因为它适合一般情况,但也许我们可以添加一个额外的方法ApprotRequest,它也将被赋予
请求
值。我想把这个讨论移到列表上


更新:Git中已经存在的更改:

我将关注讨论,并希望在回购协议中有解决方案后(针对其他用户)更新此答案。谢谢