There is only one s.PageTarget() - so we cannot change it, even tempoararily. We...
authorbep <bjorn.erik.pedersen@gmail.com>
Sat, 7 Mar 2015 12:22:02 +0000 (13:22 +0100)
committerbep <bjorn.erik.pedersen@gmail.com>
Sat, 7 Mar 2015 12:22:02 +0000 (13:22 +0100)
...

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)

hugolib/site.go

index adef3d4995be8a810883ce35c72b2a4050f35659..00dbba74f27ec97eb28f5cad2fc70aee99912df3 100644 (file)
@@ -1249,12 +1249,6 @@ func (s *Site) RenderHomePage() error {
                }
        }
 
-       // 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 @@ func (s *Site) RenderSitemap() error {
 
        sitemapDefault := parseSitemap(viper.GetStringMap("Sitemap"))
 
+       optChanged := false
+
        n := s.NewNode()
 
        // Prepend homepage to the list of pages
@@ -1299,12 +1295,23 @@ func (s *Site) RenderSitemap() error {
                }
        }
 
+       // 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
 }