Exclude /registry/ placeholder from www sitemap (fixes cross-sitemap lastmod duplicate) - #21139
Exclude /registry/ placeholder from www sitemap (fixes cross-sitemap lastmod duplicate)#21139workprentice[bot] wants to merge 1 commit into
Conversation
…lastmod duplicate) https://www.pulumi.com/registry/ is the only URL on pulumi.com that appears in two different submitted sitemaps at once: the www sitemap.xml (Hugo, via content/registry.md) and the Registry app's own /registry/sitemap.xml. The two declare lastmod values 861+ days apart, and the www sitemap's entry (2023-12-11) is the single oldest lastmod in the entire 2,738-URL sitemap. content/registry.md is a build-time placeholder only. Its own comment explains why it exists: CloudFront needs an S3 object at registry/index.html to forward /registry requests to the Registry origin, which actually serves the page. Google never sees the HTML Hugo renders from this file. The real page, and its real lastmod, already live in the Registry app's own sitemap. Giving this placeholder a maintained lastmod (the fix the follow-up card proposed) would keep the duplicate and put a script-refreshed date on a page that is deliberately empty. The correct fix is to stop claiming this URL in the www sitemap at all, since the Registry sitemap already owns it with an accurate value. Adds a purpose-built sitemap_exclude front-matter flag rather than reusing private/block_external_search_index, both of which also add a noindex meta tag -- this page is correctly indexed today and should stay that way; only the sitemap entry is wrong. Verified via a full local hugo build: diffing the generated sitemap.xml before/after this change removes exactly one URL (registry/) and no others, and public/registry/index.html still renders, so the CloudFront placeholder trick is unaffected. Follow-up work (filed as separate board cards, out of scope for this PR): the Registry app's own landing-page lastmod is git-date-based and doesn't track live content; a duplicated <title>Pulumi Registry | Pulumi Registry</title> tag on the live registry landing page; and the nested sitemap index at /registry/sitemap.xml, which Google has stated it does not support.
Pre-merge Review — Last updated 2026-08-26T13:05:46ZTip Summary: This is a small SEO/infrastructure change: it adds a Review confidence:
Investigation log
🔍 Verification trail7 claims extracted · 2 verified · 0 unverifiable · 0 contradicted
🚨 Outstanding in this PRThese must be resolved or refuted before merging.
|
|
Your site preview for commit d8cdc48 is ready! 🎉 http://www-testing-pulumi-docs-origin-pr-21139-d8cdc48d.s3-website.us-west-2.amazonaws.com Changed pages: |
Lighthouse Performance ReportCommit: d8cdc48 | Metric definitions
|
What
content/registry.mdis excluded from the www sitemap via a newsitemap_excludefront-matter flag, wired intolayouts/_default/sitemap.xml. Documented in CONTRIBUTING.md.Why
https://www.pulumi.com/registry/is the only URL on pulumi.com that shows up in two different submitted sitemaps at once, with lastmod values 861+ days apart:wwwsitemap (Hugo, this repo,content/registry.md)2023-12-11T12:53:57-08:00/registry/sitemap.xml2026-04-22T16:45:33.000ZLast-Modifiedheader onhttps://www.pulumi.com/registry/The
2023-12-11value is also the single oldest lastmod in the entire 2,738-URL www sitemap, next oldest being 831 days.content/registry.mdis not a real content page. Its own front matter says so: it exists only so S3 has an object to hand to CloudFront atregistry/index.html, so CloudFront can then forward the actual request on to the Registry app, which is what really serves/registry/. Google never sees the HTML Hugo renders here. Confirmed the git history is genuinely frozen at that 2023 commit (2c85e02c, "Replace infinite redirect with placeholder page (#10300)") via an unshallowed clone, so this is not a rollup-fix gap like the one PR #21036 closed for/blog/-- this page has no descendants to roll up from, and its content is not the descendant's content either.The follow-up card that flagged this asked whether to fix it with an explicit
lastmodfront-matter override refreshed by a script, or accept the git date as inherently uninformative. Neither is right: a script-maintained date on a deliberately empty file still leaves two sitemaps disagreeing about one canonical URL, and accepting the status quo leaves the property's only cross-sitemap duplicate and its single oldest lastmod in place. The Registry app's sitemap already carries this URL with an accurate value, so the correct fix is to stop claiming it a second time here.Why not reuse
privateorblock_external_search_indexBoth of those existing front-matter flags also add a
noindexmeta tag (seelayouts/partials/head.html)./registry/is correctly indexed today (Search Console:Submitted and indexed, crawled within the last day) and should stay that way -- only the sitemap entry is wrong, not the page's indexability.sitemap_excludeis a new, narrowly-scoped flag that touches onlylayouts/_default/sitemap.xml's inclusion check.Impact, honestly sized
This is a lastmod-trust fix, not a traffic play. Search Console already shows Google crawling and ranking
/registry/and the wider registry section fine (90d: landing page 382 clicks / 9.8K impressions / avg pos 13.0; the whole/registry/*section 29.9K clicks / 4.95M impressions / avg pos 7.2, driven by the long tail of individual provider pages). Google's own guidance is that it uses<lastmod>"if it's consistently and verifiably... accurate" (Build and Submit a Sitemap); a URL that contradicts itself across two sitemaps on the same property is exactly the kind of signal that erodes that trust property-wide, including across the 59,633 URLs in the registry sitemap where lastmod-driven crawl scheduling is doing real work.Verification
Full local
hugo --gc --minify -e productionbuild, before and after this change, diffing the generatedsitemap.xmlURL sets:Exactly one URL removed, nothing else changed (2,162 -> 2,161 URLs).
public/registry/index.htmlstill renders (92,876 bytes) after the change, so the CloudFront placeholder trick this file exists for is unaffected.Out of scope (follow-up cards filed on the Marketing Content Calendar board)
2026-04-22) is itself git-date-based on a rarely-touched file and doesn't track the page's actual live content -- lower priority since it's not wrong, just not a great freshness signal.<title>Pulumi Registry | Pulumi Registry</title>tag on the live registry landing page, traced tothemes/default/layouts/partials/head.htmlin thepulumi/registryrepo./registry/sitemap.xml(a<sitemapindex>pointed to by/sitemap-index.xml, itself pointing to two more sitemaps) -- Google has stated (via John Mueller) that nested sitemap indexes are not supported.🧠 This PR was created by workprentice.