From 60a1be6de0c10286a658ae7b9bcf0d891965dc55 Mon Sep 17 00:00:00 2001 From: Caidan Williams Date: Mon, 25 Aug 2025 15:24:57 -0700 Subject: feat(seo): add canonical URL filter to remove query parameters Addresses community feedback about canonical URLs being misleading when they include UTM parameters. The new Pongo2 filter creates clean canonical URLs while preserving tracking parameters for social sharing. --- bskyweb/cmd/bskyweb/filters.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 bskyweb/cmd/bskyweb/filters.go (limited to 'bskyweb') diff --git a/bskyweb/cmd/bskyweb/filters.go b/bskyweb/cmd/bskyweb/filters.go new file mode 100644 index 000000000..0b882780b --- /dev/null +++ b/bskyweb/cmd/bskyweb/filters.go @@ -0,0 +1,28 @@ +package main + +import ( + "net/url" + + "github.com/flosch/pongo2/v6" +) + +func init() { + pongo2.RegisterFilter("canonical", filterCanonical) +} + +func filterCanonical(in *pongo2.Value, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) { + urlStr := in.String() + + parsedURL, err := url.Parse(urlStr) + if err != nil { + // If parsing fails, return the original URL + return in, nil + } + + // Remove query parameters and fragment + parsedURL.RawQuery = "" + parsedURL.Fragment = "" + + // Return the cleaned URL + return pongo2.AsValue(parsedURL.String()), nil +} -- cgit 1.4.1