diff options
author | Caidan Williams <caidan@internet.dev> | 2025-08-25 15:24:57 -0700 |
---|---|---|
committer | Caidan Williams <caidan@internet.dev> | 2025-08-25 16:04:45 -0700 |
commit | 60a1be6de0c10286a658ae7b9bcf0d891965dc55 (patch) | |
tree | 0f5430bf94f5bc91f48e0282a7c249c9025cbe37 /bskyweb | |
parent | 27c591f031fbe8b3a5837c4ef7082b2ce146a050 (diff) | |
download | voidsky-60a1be6de0c10286a658ae7b9bcf0d891965dc55.tar.zst |
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.
Diffstat (limited to 'bskyweb')
-rw-r--r-- | bskyweb/cmd/bskyweb/filters.go | 28 |
1 files changed, 28 insertions, 0 deletions
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 +} |