From 75ad9cdaaba5e2c13582cd95bc77fb1b570e0b75 Mon Sep 17 00:00:00 2001 From: Bjørn Erik Pedersen Date: Thu, 12 Dec 2024 15:42:17 +0100 Subject: Add config option disableDefaultLanguageRedirect Fixes #13133 --- config/allconfig/allconfig.go | 3 +++ hugolib/config_test.go | 23 +++++++++++++++++++++++ hugolib/site_render.go | 3 +++ 3 files changed, 29 insertions(+) diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go index b158d8a90..be4480f45 100644 --- a/config/allconfig/allconfig.go +++ b/config/allconfig/allconfig.go @@ -505,6 +505,9 @@ type RootConfig struct { // Set this to true to put all languages below their language ID. DefaultContentLanguageInSubdir bool + // Disable generation of redirect to the default language when DefaultContentLanguageInSubdir is enabled. + DisableDefaultLanguageRedirect bool + // Disable creation of alias redirect pages. DisableAliases bool diff --git a/hugolib/config_test.go b/hugolib/config_test.go index c9db0d2f0..c0bfde37d 100644 --- a/hugolib/config_test.go +++ b/hugolib/config_test.go @@ -1339,6 +1339,29 @@ Home. b.Assert(len(b.H.Sites), qt.Equals, 1) } +func TestDisableDefaultLanguageRedirect(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +defaultContentLanguageInSubdir = true +disableDefaultLanguageRedirect = true +[languages] +[languages.en] +title = "English Title" +[languages.sv] +title = "Swedish Title" +-- layouts/index.html -- +Home. + + +` + b := Test(t, files) + + b.Assert(len(b.H.Sites), qt.Equals, 2) + b.AssertFileExists("public/index.html", false) +} + func TestLoadConfigYamlEnvVar(t *testing.T) { defaultEnv := []string{`HUGO_OUTPUTS=home: ['json']`} diff --git a/hugolib/site_render.go b/hugolib/site_render.go index 83f2fce89..e5b2b62ab 100644 --- a/hugolib/site_render.go +++ b/hugolib/site_render.go @@ -334,6 +334,9 @@ func (s *Site) renderAliases() error { // renderMainLanguageRedirect creates a redirect to the main language home, // depending on if it lives in sub folder (e.g. /en) or not. func (s *Site) renderMainLanguageRedirect() error { + if s.conf.DisableDefaultLanguageRedirect { + return nil + } if s.h.Conf.IsMultihost() || !(s.h.Conf.DefaultContentLanguageInSubdir() || s.h.Conf.IsMultilingual()) { // No need for a redirect return nil -- cgit v1.2.3