Serve static files from a Yesod app.
This is most useful for standalone testing. When running on a production server (like Apache), just let the server do the static serving.
In fact, in an ideal setup you'll serve your static files from a separate
domain name to save time on transmitting cookies. In that case, you may wish
to use urlRenderOverride
to redirect requests to this subsite to a
separate domain name.
- data Static = Static {
- staticLookup :: FilePath -> IO (Maybe (Either FilePath Content))
- staticTypes :: [(String, ContentType)]
- data StaticRoute = StaticRoute Strings
- fileLookupDir :: FilePath -> [(String, ContentType)] -> Static
- staticFiles :: FilePath -> Q [Dec]
Subsite
A function for looking up file contents. For serving from the file system,
see fileLookupDir
.
Static | |
|
YesodSubSite Static master |
Lookup files in filesystem
fileLookupDir :: FilePath -> [(String, ContentType)] -> StaticSource
Lookup files in a specific directory.
If you are just using this in combination with the static subsite (you probably are), the handler itself checks that no unsafe paths are being requested. In particular, no path segments may begin with a single period, so hidden files and parent directories are safe.
For the second argument to this function, you can just use typeByExt
.
staticFiles :: FilePath -> Q [Dec]Source
This piece of Template Haskell will find all of the files in the given directory and create Haskell identifiers for them. For example, if you have the files "static/style.css" and "static/js/script.js", it will essentailly create:
style_css = StaticRoute ["style.css"] js_script_js = StaticRoute ["js/script.js"]