これは非常に単純な質問です。同時に複数のホストを処理できる Yesod アプリケーションを実行するにはどうすればよいですか?
デフォルトの Yesod セットアップは、任意のホストからの着信接続を処理できますが、すべての URL はapproot
先頭に追加してレンダリングされます。joinPath
現在のドメインを保存してその関数で使用できるようにする方法があれば、Yesod インスタンス宣言でオーバーライドすることは可能ですが、ありません。
この wiki ページで説明されている方法は機能しますが、ルートに追加のパラメーターを強制するため、非常にハックですdomain
(照合するドメインの静的セットがないため)。実用的な目的のために (私は多くのルートを持っており、そのうちのいくつかはドメインに依存していないため)、ルートをそのままにしておくソリューションを用意することをお勧めします。ハンドラー関数。
私は絶対 URL を必要とするもの (電子メール、RSS、XML API など) を使用してapproot _ = ""
いるため、オプションではありません。
コンパイル時に、サポートする必要があるすべてのホスト名を知ることはできません。
approot
では、変数ではなく受信リクエストのホスト名を使用するように URL をレンダリングするにはどうすればよいでしょうか?