// Sitemaps behaves different: In a multilanguage setup there will always be a index file and
        // one sitemap in each lang folder.
        assertFileContent(t, "public/sitemap.xml", true,
-               "<loc>http:/example.com/blog/en/sitemap.xml</loc>",
-               "<loc>http:/example.com/blog/fr/sitemap.xml</loc>")
+               "<loc>http://example.com/blog/en/sitemap.xml</loc>",
+               "<loc>http://example.com/blog/fr/sitemap.xml</loc>")
 
        if defaultInSubDir {
                assertFileContent(t, "public/fr/sitemap.xml", true, "<loc>http://example.com/blog/fr/</loc>")
 
        // Check sitemap(s)
        sitemapIndex := readDestination(t, "public/sitemap.xml")
-       require.True(t, strings.Contains(sitemapIndex, "<loc>http:/example.com/blog/en/sitemap.xml</loc>"), sitemapIndex)
-       require.True(t, strings.Contains(sitemapIndex, "<loc>http:/example.com/blog/fr/sitemap.xml</loc>"), sitemapIndex)
+       require.True(t, strings.Contains(sitemapIndex, "<loc>http://example.com/blog/en/sitemap.xml</loc>"), sitemapIndex)
+       require.True(t, strings.Contains(sitemapIndex, "<loc>http://example.com/blog/fr/sitemap.xml</loc>"), sitemapIndex)
        sitemapEn := readDestination(t, "public/en/sitemap.xml")
        sitemapFr := readDestination(t, "public/fr/sitemap.xml")
        require.True(t, strings.Contains(sitemapEn, "http://example.com/blog/en/sect/doc2/"), sitemapEn)
 
 // SitemapAbsURL is a convenience method giving the absolute URL to the sitemap.
 func (s *SiteInfo) SitemapAbsURL() string {
        sitemapDefault := parseSitemap(viper.GetStringMap("Sitemap"))
-       return path.Join(s.HomeAbsURL(), sitemapDefault.Filename)
+       p := s.HomeAbsURL()
+       if !strings.HasSuffix(p, "/") {
+               p += "/"
+       }
+       p += sitemapDefault.Filename
+       return p
 }
 
 func (s *Site) initializeSiteInfo() {