0

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 

常に型の不一致があります。

4

1 に答える 1