188-URL cleanup and hreflang on a Drupal 9 / Pantheon site
A Drupal 9 site on Pantheon had 188 legacy URLs bleeding into Search Console as duplicate content, missing hreflang across international variants, and a hover-preview regression exposing legacy URLs at the database level.
The problem
A subsidiary site of a global agribusiness brand ran Drupal 9 on Pantheon with 188 legacy URLs carrying a deprecated subsection prefix. They were bleeding into Search Console as duplicate content.
The same site needed hreflang across its international language variants, and a hover-preview regression was exposing those legacy URLs at the database level.
The approach
URL cleanup shipped across four phases through Pantheon Dev to Test to Live. Sitemap regeneration was blocked by a stale hook left behind by an installed vendor plugin, which was cleared with a url_generators config override.
Hreflang went in across every language variant with proper x-default fallback, then validated in GSC and submitted for re-crawl.
The database work was the deep part. Legacy URLs were embedded in serialized link-field data across three tables: field_button_link, field_learn_more_link, and field_link. Each table had its own column conventions, so the fix required direct DB migration scripts over SSH.
The outcome
All 188 legacy URL patterns were removed and validated in GSC, hreflang went live across all variants, and the database-level regression was closed.
The project cleaned up what users and crawlers could see, then went under the interface to remove the legacy URL references still embedded in serialized fields.
Stack at a glance
Drupal 9 · Pantheon · multi-environment SSH + Drush · hreflang with x-default · direct DB migration across serialized link-field tables · RSA SSH key auth
Key Work
- 188 legacy URL patterns removed
- Pantheon Dev to Test to Live deployment path followed
- Stale vendor hook resolved with a url_generators config override
- Hreflang shipped across international language variants
- x-default fallback implemented
- GSC validation and re-crawl submission handled
- Serialized link-field data migrated across three database tables
More from the build shelf
Need this kind of technical work?
I build and rescue sites, tools, and technical SEO systems with the code, search, and performance layers handled together.
Start with a Site Health Check → ← Back to all case studiesWant work like this?
Whether you need a new build, a site rescue, custom functionality, or a technical SEO cleanup, I would love to hear what you are working on.