900 products, one URL in the index
A furniture retailer relaunched on a slick single-page app and watched indexed pages collapse from 1,100 to 38 over two months. Sales from organic followed them down.
The mystery: the sitemap listed 900 product URLs, all live, all returning content in a browser. Yet Search Console insisted almost none existed.
Looking closer at the address bar told the story. Every product link looked like /shop#/sofa/linen-grey. The path after the # is the fragment — and Googlebot strips everything after the hash before it ever requests a URL. To Google, all 900 'pages' were the same one document: /shop.
Turns out the router had been configured for hash-based history because it 'worked without server config.' Convenient for the dev. Invisible to crawlers.
The fix: switch the router to the History API so URLs become real paths like /shop/sofa/linen-grey, then add a server rule returning the app shell for any of those paths.
Result: from 38 indexed pages to 870 in nine weeks, organic revenue recovered to 94% of the old site. One character in the URL had been hiding the entire catalog.
Hydrate Diaries
@HydrateDiaries
900 products, one URL in the index
Этот пост опубликован в Telegram-канале Hydrate Diaries. Подписаться можно по ссылке: @HydrateDiaries.