diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d8794348bfa7e5fb64eca82b839e80873dfcb548..ebe82242786cbd70856fe36840d69c3bbc304bc8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -38,7 +38,7 @@ setup:
     - echo $ROOT_RELATIVE_NAMESPACE
     - test "$ROOT_RELATIVE_NAMESPACE" == "${CI_PROJECT_NAMESPACE#$CI_PROJECT_ROOT_NAMESPACE}" || { echo "ROOT_RELATIVE_NAMESPACE is not set correctly" ; exit 1 ; }
   script:
-    - find src/ -type f -name '*.html'
+    - find src/ -type f \( -iname '*.html' -or -iname 'sitemap.xml' \)
       -exec sed -i
         -e "s|%%BRANCH%%|${CI_COMMIT_BRANCH}|g"
         -e "s|%%BASE_URL%%|${CI_PAGES_URL}/|g"
diff --git a/src/cache-test.html b/src/cache-test.html
index c4357328fdc250809905088fa1379e868b4578e4..0391a3b4abbc1232f418693054db9e6b4cfed4db 100644
--- a/src/cache-test.html
+++ b/src/cache-test.html
@@ -7,6 +7,7 @@
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta name="generator" content="GitLab Pages">
   <link rel="shortcut icon" href="gitlab-favicon.png">
+  <link rel="canonical" href="cache-test.html">
   <link rel="preload" href="style.css" as="style">
   <link rel="stylesheet" href="style.css">
   <style>
diff --git a/src/index.html b/src/index.html
index 368a6da28db357cf40261ced3afdaab447f9ccce..20e3651a4539ee291a3d8f41ef1a9251c2dac034 100644
--- a/src/index.html
+++ b/src/index.html
@@ -7,6 +7,7 @@
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta name="generator" content="GitLab Pages">
   <link rel="shortcut icon" href="gitlab-favicon.png">
+  <link rel="canonical" href="./">
   <link rel="preload" href="style.css" as="style">
   <link rel="stylesheet" href="style.css">
 </head>
diff --git a/src/sitemap.xml b/src/sitemap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9aa532a92293ecc741beb9be160fca744c189ed
--- /dev/null
+++ b/src/sitemap.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+  <url>
+    <loc>%%BASE_URL%%</loc>
+  </url>
+  <url>
+    <loc>%%BASE_URL%%cache-test.html</loc>
+  </url>
+  <url>
+    <loc>%%BASE_URL%%sub/</loc>
+  </url>
+</urlset>
+<!-- vi: set ts=2 sw=2 et ft=xml: -->
diff --git a/src/sub/index.html b/src/sub/index.html
index 4cf21a80a4efcc0cea25d3293ed17cc534cd3a29..f48ebcd45e62376c0a6fccae48a0a28587629d32 100644
--- a/src/sub/index.html
+++ b/src/sub/index.html
@@ -7,6 +7,7 @@
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta name="generator" content="GitLab Pages">
   <link rel="shortcut icon" href="gitlab-favicon.png">
+  <link rel="canonical" href="sub/">
   <link rel="preload" href="style.css" as="style">
   <link rel="stylesheet" href="style.css">
 </head>