Nodesify’s website generated 36 regional versions of every blog article, although the article bodies were available only in English. For the 48 articles in our build on 11 October 2026, that meant 1,728 generated article files. We changed generation to use the available content edition and verified that the build produced 48 article files instead.
This is a case study of our own website. The result is a verified reduction in generated files, not a measured improvement in Google rankings, customer enquiries or revenue. The article count is the snapshot used for this work. Publishing this case study adds another article.
What the crawler revealed
Our Ahrefs crawl showed the same article fetched under regional paths such as /en-my/blog/…, /en-qa/blog/… and /ja-jp/blog/…. The surrounding navigation changed language, but the main article did not.
The XML sitemap already listed the English edition. Blog cards also linked to that edition. The missing connection was the language selector: it constructed a regional URL for every available country and language, even when no translated article existed.
This distinction matters when reviewing a crawl. A URL can be discoverable through internal links without appearing in the sitemap. A translated navigation label also does not establish that the article itself has been translated.
Why noindex did not solve the crawling problem
The duplicate article pages carried noindex. That tells a supporting search engine not to index the page after fetching it. It does not remove the link or eliminate the request needed to read the instruction.
We wanted one public article destination while preserving translated pages where substantive translated content exists. Our change therefore addressed route generation, language links and redirects together. Google’s duplicate URL guidance describes permanent redirects as a consolidation method when duplicate pages are being retired.
The implementation decisions
| Surface | Before | Change |
|---|---|---|
| Article generation | Every locale multiplied by every active article | Only available content editions generate article files |
| Language selector | Constructed a locale-prefixed path | Uses the shared content availability policy |
| Old regional article URL | Served a duplicate English article | Redirect handler sends it to the English article |
| Public article links | Some components used regional paths | Link to the available article edition |
| Translated service pages | Available at explicit locale URLs | Keep their translated editions |
Our site uses Astro and Cloudflare static assets. Existing static files are served before Astro middleware runs. Adding a redirect only in middleware would therefore leave those files reachable. Stopping generation of the duplicate assets was necessary for their requests to reach the redirect handler.
The default English files remain the backing assets for our clean public /blog/… paths. That is an implementation detail, not another set of article links we want visitors to navigate.
What we verified
The production build completed, and TypeScript compilation passed. We inspected the generated article files and found 48, all under the default English backing directory. That removed 1,680 regional article files from the measured build, a reduction of approximately 97.2%.
We also inspected the generated HTML of an existing article. Its language-selector links pointed to the clean article URL, and its canonical tag matched that URL. The redirect implementation preserves query parameters and resolves the renamed legacy article to its current English destination.
These checks establish the build output and link behavior. They do not establish that every search engine has processed the change. Deployment verification still needs live HTTP status checks, followed by a fresh crawl. A crawl already in progress can contain old pages and should not be used as proof of the final result.
What we would measure next
Keep the evidence appendix tied to 11 October 2026, 48 articles. The recorded result is 36 × 48 = 1,728 generated files before and 48 after, with 1,680 removed. The historical raw command transcript and exact source revision are not attached to this article; the narrative above is the published record, not a newly rerun build. Current article growth must not be compared with that old denominator as if it were the same run.
| Evidence field | Representative record and status |
|---|---|
| Alternative URL | /ja-jp/blog/how-to-create-a-business-website illustrates the regional duplicate shape |
| Intended public destination | /blog/how-to-create-a-business-website |
| Canonical and language links | Expected to target that public English edition; generated-HTML behaviour was inspected in the recorded work |
| Old URL response | Permanent redirect expected from the implementation; live response for this example remains unverified here |
| Recrawl | No dated post-deployment crawl result is attached; unresolved |
These representative paths explain what to check; they are not a claim of a newly captured HTTP response. Preserve status, Location, final canonical and crawl date together when closing that verification loop.
Frequently asked questions
When should translated URLs remain separate?
When distinct reviewed main content exists and the editions are intentionally maintained. Navigation translation alone did not justify separate article bodies in this case.
Why can a noindex URL still be crawled?
The crawler may fetch it to discover the instruction, and internal links can continue exposing it. Review links, generation and response behaviour together. An architecture review can assess those boundaries on your current platform; this Astro example is not a reason to rebuild in WordPress.
Continue the measurement record
We would compare duplicate article requests before and after deployment, check that important canonical pages remain indexable, and review Search Console clicks and impressions for those pages. Qualified enquiries are a separate business measure. A smaller crawl alone does not prove that a site attracts better customers.
We would also check other sources of URL multiplication, such as contact-form preselection parameters. The aim is to preserve useful visitor behavior while avoiding separate crawlable URLs for states that do not provide distinct content.
Apply the same review to your website
Start with one duplicated article. Trace which component links to its alternative URLs, identify whether each edition has distinct main content, and check which layer serves the response. Align your generation policy, internal links, sitemap and redirects before expanding the change to a whole page family.
Our AI-built website checklist covers the wider launch review. For a codebase investigation, our Astria engineering guide explains how we inspect relationships and their supporting evidence. If you need help with your own site, see our website development service.




