Canonical URL is set on each page
Why it matters
The same page reached via /about, /about/, /about?ref=twitter, and https://www.yoursite.com/about is four separate URLs to Google, and PageRank splits across all of them. Duplicate indexing dilutes ranking signals, triggers canonical-selection on Google's side (often picking a URL you did not intend), and on e-commerce sites causes faceted URLs to consume crawl budget that should go to product pages. A canonical tag consolidates all signals to the version you choose.
Severity rationale
Medium because duplicate-URL dilution compounds silently — no error surfaces, but ranking authority leaks on every crawl.
Remediation
Set alternates.canonical per page in Next.js metadata, pointing to the absolute URL you want indexed. For dynamic routes, use generateMetadata so each slug gets its own canonical.
// app/[slug]/page.tsx
export async function generateMetadata({ params }) {
return {
alternates: { canonical: `https://yoursite.com/${params.slug}` },
}
}
For the Pages Router, emit a <link rel="canonical" href="..."> inside next/head. Always use the HTTPS, www-or-not variant that matches your production hostname.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the SEO Fundamentals Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from seo-fundamentals·automated