这一定是非常愚蠢的事情。我刚开始玩scotty,无法正确获取静态内容。Web Scotty:提供静态文件时找不到文件
import Network.HTTP.Types
import Web.Scotty
import qualified Data.Text as T
import Data.Monoid (mconcat)
import Data.Aeson (object, (.=))
import Network.Wai.Middleware.Static
main = scotty 3000 $ do
middleware $ staticPolicy (noDots >-> addBase "static")
get "/" $ file "index.html"
很简单。这就是你在几个scotty教程中找到的。但是由于某种原因它不起作用。在浏览器中通过'/'访问给我'文件未找到'的东西。 如果我在浏览器中输入“/index.html”,它就会起作用。但它是错的!我希望它可以通过'/'而不是'/index.html'访问。它忽略根目录并直接获取html文件。我如何通过'/'root来为index.html提供服务?没有太多的信息和一些教程,我发现指向上面的例子或类似的不能按预期工作。
我试着将头文件设置为'text/html',什么不是...没有运气。
谢谢您的回答。所以,如果我理解正确,'文件'函数需要一个相对于当前工作目录的文件路径,并且与中间件暴露的静态目录无关,对吧?这有点令人困惑,因为它看起来像我不需要中间件来提供静态html文件,而网络上的一些scotty例子却让你不这么想。看来中间件静态策略只需要暴露css和javascript文件而不是实际的html文件。 –
当你不想为每个文件显式路由时,中间件将会很有用 – Carsten