{"record":{"id":"595d8067fcc002aa","repo":"gohugoio/hugo","slug":"http-aliases-not-supported-q","errorCode":null,"errorMessage":"http* aliases not supported: %q","messagePattern":"http\\* aliases not supported: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"hugolib/page__meta.go","lineNumber":762,"sourceCode":"\t\t\t// lower case names:\n\t\t\tfor i, s := range o {\n\t\t\t\to[i] = strings.ToLower(s)\n\t\t\t}\n\t\t\tpm.pageConfig.Outputs = o\n\t\tcase \"draft\":\n\t\t\tdraft = new(bool)\n\t\t\t*draft = cast.ToBool(v)\n\t\tcase \"layout\":\n\t\t\tpcfg.Layout = cast.ToString(v)\n\t\t\tpcfg.Params[loki] = pcfg.Layout\n\t\tcase \"weight\":\n\t\t\tpcfg.Weight = cast.ToInt(v)\n\t\t\tpcfg.Params[loki] = pcfg.Weight\n\t\tcase \"aliases\":\n\t\t\tpcfg.Aliases = cast.ToStringSlice(v)\n\t\t\tfor i, alias := range pcfg.Aliases {\n\t\t\t\tif strings.HasPrefix(alias, \"http://\") || strings.HasPrefix(alias, \"https://\") {\n\t\t\t\t\treturn fmt.Errorf(\"http* aliases not supported: %q\", alias)\n\t\t\t\t}\n\t\t\t\tpcfg.Aliases[i] = filepath.ToSlash(alias)\n\t\t\t}\n\t\t\tpcfg.Params[loki] = pcfg.Aliases\n\t\tcase \"sitemap\":\n\t\t\tpcfg.Sitemap, err = config.DecodeSitemap(ps.s.conf.Sitemap, hmaps.ToStringMap(v))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to decode sitemap config in front matter: %s\", err)\n\t\t\t}\n\t\t\tsitemapSet = true\n\t\tcase \"iscjklanguage\":\n\t\t\tisCJKLanguage = new(bool)\n\t\t\t*isCJKLanguage = cast.ToBool(v)\n\t\tcase \"translationkey\":\n\t\t\tpcfg.TranslationKey = cast.ToString(v)\n\t\t\tpcfg.Params[loki] = pcfg.TranslationKey\n\t\tcase \"resources\":\n\t\t\tvar resources []map[string]any","sourceCodeStart":744,"sourceCodeEnd":780,"githubUrl":"https://github.com/gohugoio/hugo/blob/52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2/hugolib/page__meta.go#L744-L780","documentation":"Companion validation to 357, applied to `aliases` (page__meta.go:762). Each alias is iterated and must be path-relative; any alias beginning with http:// or https:// is rejected because aliases become redirect routes on this site and an absolute URL is invalid for that purpose.","triggerScenarios":"Front matter lists an absolute URL among aliases, e.g. `aliases: [https://old.com/page]`. The loop checks each entry's prefix and fails the build on the first offending alias.","commonSituations":"Treating aliases like canonical external redirects; copying old-site absolute URLs into aliases during migration.","solutions":["Make aliases path-relative: `aliases: [/old/path/, /another/]`.","Keep absolute-URL redirects outside Hugo aliases (web server / redirect service).","Strip scheme+host from each alias value."],"exampleFix":"// before\n---\naliases:\n  - https://old.com/about/\n---\n\n// after\n---\naliases:\n  - /about/\n---","handlingStrategy":"validation","validationCode":"# every alias must be path-relative\nfor a in \"${aliases[@]}\"; do case \"$a\" in http://*|https://*) echo \"bad alias: $a\";; esac; done","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep all aliases path-relative.","Don't paste old-site absolute URLs into aliases.","Handle external redirects at the web-server layer."],"tags":["front-matter","aliases","validation","page"],"backgroundTag":null,"analyzedSha":"52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2","analyzedAt":"2026-08-09T21:49:36.660Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}