Servant/Wai アプリで、「domain.com」から「www.domain.com」へのすべてのリクエストをリダイレクトしたい
{-# LANGUAGE OverloadedStrings #-}
--.......
app :: Application
app req respond = do
case requestHeaderHost req of
Just host -> do
case BS.unpack host of
"www":rest -> respond =<< redirect' HttpTp.status302 [] "domain.com"
_ -> undefined
Nothing -> undefined
エラーは
No instance for (Data.String.IsString GHC.Word.Word8)
arising from the literal ‘"www"’
In the pattern: "www"
私はそれが何を意味するかを知っており、クラス Show は Word8 用に実装されるべきだったと思います。実装されていない場合は、理由があるに違いありません。多分私はそれを間違った方法でやっていますか?
どうすればこれを修正できますか、または別のより良い方法で実行できますか?
アップデート:
コンパイルできません:
-- 1
Just host -> do
case BS.isPrefixOf (BS.pack $ show "www") host of
-- 2
Just host -> do
case Text.isPrefixOf (Text.pack $ show "www") host of
-- 3
Just host -> do
case DL.isPrefixOf "www" host of
常に型の不一致があります。