Services

Fix Duplicate URLs, Redirects and Canonical Problems in Next.js

Use this page when one page is reachable on multiple URLs, redirect rules keep changing, or canonical signals no longer match the live route policy.

Fix duplicate URLs, bad redirects, and canonical mistakes before search engines and users keep landing on conflicting versions of the same page.

Typical symptoms

  • Duplicate URLs, conflicting canonicals, or trailingslash mismatches are appearing.
  • Redirect maps are incomplete, inconsistent, or difficult to trust.
  • The same content is reachable across multiple domains or URL states.

Likely causes

  • URL policy changed during a migration or deployment without full followthrough.
  • Redirect logic is split across platform, application, and CMS layers.
  • Canonical output does not match the actual preferred live URLs.

What I look at first

  • Quick check: request the same priority URLs across slash, case, and domain variants and compare the final destination and canonical output.
  • Domain, trailingslash, and casehandling rules across the stack.
  • Which route families are creating ambiguity for users and crawlers.

How I help fix this

  • Reduce the problem to one clear URL policy and implementation path.
  • Prioritise the highestrisk redirect and canonical gaps.
  • Support rollout so the fixes are measurable and safe.

When to bring me in

  • Bring me in when migrations or platform changes introduced duplicate URL states that now affect visibility.
  • Bring me in when redirect ownership is split across app, CDN, and CMS layers and nobody trusts the live policy.

Related project experience

  1. Nando’s

    Senior software engineer on the UK and Ireland replatform, migrating Nando’s customerfacing websites from legacy Drupal to a unified headless platform built with Next.js and Storyblok, with a focus on performance, accessibility, and SEO.

    Screenshot of the Nando’s website; part of John Kavanagh's development portfolio.

Related technical articles

  • Redirect a default Vercel subdomain to your custom domain

    25 June 2025

    When you set up a custom domain in Vercel, the default `vercel.app` subdomain still serves your site, which can lead to duplicate content. Here's how to fix it.

  • 301 vs. 307 redirects

    11 July 2019

    301 and 307 redirects do different jobs. This guide explains when each one fits, what they tell browsers, and where SEO enters the picture.

  • Optimising HTML markup for SEO

    03 February 2017

    Optimising HTML improves SEO, accessibility, and user experience. Here, I explore semantic HTML, clean code, alt text, and other best practices.

Related services

  1. Capability

    Technical SEO for JavaScript Applications

    Bring in engineeringled SEO help when Google is not indexing important JavaScript pages because rendering, crawlability, metadata, or migration changes are getting in the way.

  2. Adjacent scenario

    Traffic Drop After a Redesign or Replatform

    Use redesign recovery and technical SEO recovery work to isolate what changed in URLs, templates, rendering, or crawl signals before the organic traffic drop compounds.

  3. Related page

    Vercel Deployment Debugging

    Choose the right Vercel production fix when builds, deployments, revalidation, or auth are blocking release confidence.

Tell me what needs fixing

Send me the affected page or route, point me at the code if that helps, and tell me what you expected to happen versus what is happening now. If this connects to a Next.js migration, technical SEO drop, performance issue, launch, or platform move, include that context too. I'll come back with the clearest next step.

Skip past clients

Previous Clients