Fix internal links to old /docs/concepts/ URLs (redirect-hop cleanup) - #21072
Fix internal links to old /docs/concepts/ URLs (redirect-hop cleanup)#21072workprentice[bot] wants to merge 1 commit into
Conversation
Several docs, blog, and tutorial pages still link to the pre-restructure /docs/concepts/... URLs, which now 301 (some via a double hop) to their current /docs/iac/concepts/..., /docs/esc/concepts/, or /docs/reference/glossary/ locations. Updated 79 files (154 link occurrences, both root-relative markdown links and fully-qualified https://www.pulumi.com/... links) to point directly at the final destination, verified live against the current redirect map. Every fragment (#anchor) and the handful of double-hop cases (missing trailing slash -> slash -> new path) were preserved/collapsed correctly. One additional file with the same pattern (content/blog/why-choose-pulumi-over-terraform/index.md) was intentionally left untouched because it already has open PRs (#21062, #21066) touching it today; filed a follow-up board card to catch it separately.
|
@claude #new-review |
There was a problem hiding this comment.
🧹 Optional style suggestions from the pre-merge review — apply or dismiss; none of them block.
Generated by Claude Code
| A resource provider is an extension of the API exposed by the respective cloud providers. As such, it can be the limiting factor. Thankfully, there is a solution to this. Since the Pulumi engine works with life-cycle callbacks handing control to the provider at appropriate times, it is easy to write a provider that implements custom logic in those callbacks. | ||
|
|
||
| Learn more about how Pulumi works [here](https://www.pulumi.com/docs/concepts/how-pulumi-works/). | ||
| Learn more about how Pulumi works [here](https://www.pulumi.com/docs/iac/guides/basics/how-pulumi-works/). |
There was a problem hiding this comment.
[style] vague link text — Link text now names the destination
| Learn more about how Pulumi works [here](https://www.pulumi.com/docs/iac/guides/basics/how-pulumi-works/). | |
| Learn more about [how Pulumi works](https://www.pulumi.com/docs/iac/guides/basics/how-pulumi-works/). |
| | `parent` | `string` | No | The name of the [parent](/docs/concepts/options/parent/) resource. The mentioned name must be present in the `nameTable`. | | ||
| | `provider` | `string` | No | The name of the [provider](/docs/concepts/options/provider/) resource. The mentioned name must be present in the `nameTable`. | | ||
| | `version` | `string` | No | The [version](/docs/concepts/options/version/) of the provider to use. | | ||
| | `logicalName` | `string` | No | The [logical name](/docs/iac/concepts/resources/names/#logicalname) of the resource. The original `name` property is then used just for codegen purposes (i.e. the source name). If either property is not set then the other field is used to fill it in. | |
There was a problem hiding this comment.
[style] difficulty qualifier — Drops 'just'; meaning unchanged
| | `logicalName` | `string` | No | The [logical name](/docs/iac/concepts/resources/names/#logicalname) of the resource. The original `name` property is then used just for codegen purposes (i.e. the source name). If either property is not set then the other field is used to fill it in. | | |
| | `logicalName` | `string` | No | The [logical name](/docs/iac/concepts/resources/names/#logicalname) of the resource. The original `name` property is then used for codegen purposes (i.e. the source name). If either property is not set then the other field is used to fill it in. | |
Pre-merge Review — Last updated 2026-08-22T13:01:51ZTip Summary: This is a mechanical SEO cleanup across 79 blog, docs, and tutorial files: every internal link to a legacy Review confidence:
Investigation log
✏️ 2 one-click style suggestions are posted inline — apply them from the Files changed tab, individually or with Add suggestion to batch. 🔍 Verification trail158 claims extracted · 118 verified · 16 unverifiable · 10 contradicted · 2 framing-drift · 2 detector findings
Important Please don't hide, resolve, or delete this comment! It breaks things! 📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches. |
continued from previous comment
📊 Editorial balanceSingle-subject post; balance check N/A. 🚨 Outstanding in this PRThese must be resolved or refuted before merging.
Important Please don't hide, resolve, or delete this comment! It breaks things! 📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches. |
|
What
Fixes internal links that still point at the pre-restructure
/docs/concepts/...URL space. Those URLs now 301 redirect (some via a double hop through a trailing-slash normalization) to their current homes under/docs/iac/concepts/...,/docs/esc/concepts/, or/docs/reference/glossary/.Why
Internal links that force a redirect hop waste crawl budget, dilute link equity, and add avoidable latency for readers.
/docs/iac/concepts/is one of the highest-impression pages on the site per Search Console, so cleaning up the links that feed it (and its sibling pages) is a direct, low-risk technical-SEO win.Scope
[label](/docs/concepts/...)) and fully-qualified links (https://www.pulumi.com/docs/concepts/...).200destination before rewriting (not guessed), and anchors (#fragment) were preserved.content/blog/why-choose-pulumi-over-terraform/index.md, was deliberately left untouched because it already has open PRs (SEO: fix CTR + internal links for "agentic infrastructure" query #21062, fix(seo): correct unsourceable claims and stale enumerations across blog #21066) touching it; a follow-up board card will catch it once those land.Verification
node ./scripts/lint/lint-markdown.json all 79 changed files: 0 errors.yarn prettier --checkon all 79 changed files: all pass.200final destination before use in the replacement map (30 distinct paths resolved).git diff --numstatconfirms 1:1 line replacement in every file (no unintended changes).🧠 This PR was created by workprentice.