diff --git a/message-index/robots.txt b/message-index/robots.txt new file mode 100644 index 00000000..d8ed6a2c --- /dev/null +++ b/message-index/robots.txt @@ -0,0 +1 @@ +Sitemap: https://errors.haskell.org/sitemap.xml diff --git a/message-index/site.hs b/message-index/site.hs index 240b54d6..edc527c4 100644 --- a/message-index/site.hs +++ b/message-index/site.hs @@ -34,6 +34,11 @@ main = hakyll $ do route idRoute compile copyFileCompiler + -- Necessary to point webcrawlers to the correct sitemap + match "robots.txt" $ do + route idRoute + compile copyFileCompiler + match "images/*" $ do route idRoute compile copyFileCompiler @@ -131,6 +136,27 @@ main = hakyll $ do match "templates/*" $ compile templateBodyCompiler + create ["sitemap.xml"] $ do + route idRoute + compile $ do + let messages = loadAll "messages/*/*" + let host = "https://errors.haskell.org" + let pageCtx :: Context String + pageCtx = + mconcat + [ modificationTimeField "lastmod" "%Y-%m-%d", + constField "host" host, + defaultContext + ] + let sitemapCtx = + mconcat + [ listField "entries" pageCtx messages, + constField "host" host, + defaultContext + ] + makeItem "" + >>= loadAndApplyTemplate "templates/sitemap.xml" sitemapCtx + create ["api/errors.json"] $ do route idRoute compile $ do diff --git a/message-index/templates/sitemap.xml b/message-index/templates/sitemap.xml new file mode 100644 index 00000000..f8836e78 --- /dev/null +++ b/message-index/templates/sitemap.xml @@ -0,0 +1,11 @@ + + +$for(entries)$ + + $host$$url$ + weekly + $if(lastmod)$$lastmod$$endif$ + 0.8 + +$endfor$ +