shithub: hugo

Download patch

ref: 851badcb7e819ad425c7eee2f30eee9a73bc37ea
parent: 63ffb916d67f9953320b402871c532c0b7a80efc
author: bep <[email protected]>
date: Sat Mar 7 08:22:02 EST 2015

There is only one s.PageTarget() - so we cannot change it, even tempoararily. We have to find another solution to this.
...

Prevent 404.html from prettifying into 404/index.html

Restore @realchaseadams's commit 348e123
"Force `UglyUrls` option to force `404.html` file name"
which got lost after some refactoring (commit 8db3c0b).

Remove the equivalent "force `UglyUrls`" code for `sitemap.xml`
because the refactored code now calls `renderAndWriteXML()`
which uses `WriteDestFile()` which does not prettify a filename.

Fixes #939 (reverted from commit c4c19ad303cb11616a7291bdbeec997e59b6d24e)

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1249,12 +1249,6 @@
 		}
 	}
 
-	// Force `UglyUrls` option to force `404.html` file name
-	if !s.PageTarget().(*target.PagePub).UglyUrls {
-		s.PageTarget().(*target.PagePub).UglyUrls = true
-		defer func() { s.PageTarget().(*target.PagePub).UglyUrls = false }()
-	}
-
 	n.Url = helpers.Urlize("404.html")
 	n.Title = "404 Page not found"
 	n.Permalink = s.permalink("404.html")
@@ -1274,6 +1268,8 @@
 
 	sitemapDefault := parseSitemap(viper.GetStringMap("Sitemap"))
 
+	optChanged := false
+
 	n := s.NewNode()
 
 	// Prepend homepage to the list of pages
@@ -1299,10 +1295,21 @@
 		}
 	}
 
+	// Force `UglyUrls` option to force `sitemap.xml` file name
+	switch s.PageTarget().(type) {
+	case *target.Filesystem:
+		s.PageTarget().(*target.PagePub).UglyUrls = true
+		optChanged = true
+	}
+
 	smLayouts := []string{"sitemap.xml", "_default/sitemap.xml", "_internal/_default/sitemap.xml"}
 
 	if err := s.renderAndWriteXML("sitemap", "sitemap.xml", n, s.appendThemeTemplates(smLayouts)...); err != nil {
 		return err
+	}
+
+	if optChanged {
+		s.PageTarget().(*target.PagePub).UglyUrls = viper.GetBool("UglyUrls")
 	}
 
 	return nil