PostgreSQL.org and Docker.com Self-Redirect Every Tracked Link. Svelte and Angular Don't.
Latest round of the site-crawl series: ran the free RankForge crawler against angular.io, svelte.dev, postgresql.org, and docker.com — 10 pages each, starting from the homepage. Prior installments (python.org, rust-lang.
Latest round of the site-crawl series: ran the free RankForge crawler against angular.io, svelte.dev, postgresql.org, and docker.com — 10 pages each, starting from the homepage. Prior installments (python.org, rust-lang.org, redis.io, go.dev, nginx.org, gitlab.com, typescriptlang.org) mostly showed the same-URL self-redirect pattern to some degree on every site. This round is the first with a clean split: two sites self-redirect on literally every tracked link, two don't self-redirect at all.
What I ran
No account needed, so this is reproducible:
-
POST https://rankforge.cc/api/analyzerwith{"seed_url": "..."}, then pollGET /api/analyzer/<id>untilstatusiscompleted. - The crawler follows internal links breadth-first from the seed, caps at 10 pages for the anonymous tier, audits every internal redirect to its final destination, and classifies every outbound external link as followed or nofollowed.
- Raw JSON for all four runs:
content/analyzer_20260929_<host>.json.
postgresql.org and docker.com: 18 of 18, every one a self-redirect
-
postgresql.org: 9 of 9 tracked redirects resolve to the identical URL that was linked —
/community,/download,/about,/support,/developer,/support/versioning,/docs/online-resources,/docs/faq,/download/snapshots. The top one (/community) has 10 internal inbound links, all pointing at a URL that 301s to itself. -
docker.com: 9 of 9 —
/blog(10 inbound links) plus 8 individual blog-post URLs, every single one a self-redirecting 301.
That's every tracked redirect on both sites landing on the exact URL that was linked — not a partial pattern this time, a complete one.
svelte.dev: 6 real redirects, zero self-redirects
svelte.dev broke the streak going the other direction. All 6 tracked redirects are genuine destination changes: /docs/svelte → /docs/svelte/overview, /tutorial → /tutorial/svelte/welcome-to-svelte, /docs/kit → /docs/kit/introduction, /docs/ai → /docs/ai/overview, /docs/cli → /docs/cli/overview, /playground → /playground/hello-world?show=input. Every one is a 307 (or 301 for playground) that actually moves the visitor somewhere new — canonical-section landing pages, not a self-referencing loop.
angular.io: the whole site has already moved
angular.io doesn't self-redirect either, but for a different reason: curl -I https://angular.io returns a 302 straight to v17.angular.io — Angular's old versioned-docs subdomain — while the crawl's actual top pages all live under angular.dev (angular.dev/ai, angular.dev/ai/develop-with-ai, angular.dev/). The current docs have fully moved domains; per-page redirect auditing came back available: false because the whole site sits behind one domain-level jump rather than a set of individually redirecting internal links. Structurally this is the same underlying issue the self-redirect pattern points at — links that don't lead where you'd expect — just surfacing as a domain migration instead of a same-URL loop.
The 0%-nofollow streak finally breaks
Every site in this series so far had total_nofollowed_external come back 0. Not this round: postgresql.org nofollows 7 of 39 external links (18%), and docker.com nofollows 56 of 230 (24%) — both real site-wide policies, not crawl noise. angular.io (0 of 298) and svelte.dev (0 of 342) keep the streak going on their own pages. Four installments and twenty-four sites into this series, this is the first time a crawled site has shown any external nofollow usage at all.
Try it on your own site
Same checks (orphan pages, near-orphans, internal authority distribution, redirect-chain hops, external nofollow audit) run in one pass, no signup: rankforge.cc/audit.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.