hugolib: Add disableAliases
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jun 2017 08:30:40 +0000 (10:30 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jun 2017 09:03:34 +0000 (11:03 +0200)
Note that even with this setting enabled, the aliases themselves are preserved on the pages.

The big motivation for this change is to be able to use the alias definitions to generate `.htaccess` or Netlify's `_redirect` files with server-side redirects.

Fixes #3613

hugolib/config.go
hugolib/site.go

index 62cdea95249790609f1d6db964ca2e796639190d..7779a4d83a438c3b9c950406f7c55f5e8452c8a5 100644 (file)
@@ -131,4 +131,5 @@ func loadDefaultSettingsFor(v *viper.Viper) {
        v.SetDefault("enableMissingTranslationPlaceholders", false)
        v.SetDefault("enableGitInfo", false)
        v.SetDefault("ignoreFiles", make([]string, 0))
+       v.SetDefault("disableAliases", false)
 }
index 829023d1554aaff71fa32a99901ec7f246434383..8aa1e087f5c98041319d7e6de48799200e591594 100644 (file)
@@ -987,14 +987,19 @@ func (s *Site) render(outFormatIdx int) (err error) {
                }
                s.timerStep("prepare pages")
 
-               // Aliases must be rendered before pages.
-               // Some sites, Hugo docs included, have faulty alias definitions that point
-               // to itself or another real page. These will be overwritten in the next
-               // step.
-               if err = s.renderAliases(); err != nil {
-                       return
+               // Note that even if disableAliases is set, the aliases themselves are
+               // preserved on page. The motivation with this is to be able to generate
+               // 301 redirects in a .htacess file and similar using a custom output format.
+               if !s.Cfg.GetBool("disableAliases") {
+                       // Aliases must be rendered before pages.
+                       // Some sites, Hugo docs included, have faulty alias definitions that point
+                       // to itself or another real page. These will be overwritten in the next
+                       // step.
+                       if err = s.renderAliases(); err != nil {
+                               return
+                       }
+                       s.timerStep("render and write aliases")
                }
-               s.timerStep("render and write aliases")
 
        }