Skip to content

Canonical Pointing to Another URL: How to Find It, Fix It and Check It

When a page's rel=canonical points somewhere else, Google may drop it from results. How to tell a correct alternate from a mistake, fix the tag, and verify Google agrees.

By SynergiX6 min read

Short answer: a page whose rel="canonical" points to a different URL is telling Google "show that other page instead of me". That is correct for real duplicates, such as tracking-parameter or print versions. It is a bug when the page is unique and should rank on its own. Fix it by making unique pages self-canonical, pointing duplicates straight at a final, indexable URL, and then checking which canonical Google actually selected.

What a canonical does, in plain terms

When several URLs show the same or nearly the same content, Google picks one to show in search results: the canonical. You can suggest which one with a tag in the page's <head>:

<link rel="canonical" href="https://www.example.com/shoes/running/" />

It is a suggestion, not an order. Google's documentation lists three ways to signal your preference:

  • Redirects: a strong signal that the target should become canonical.
  • rel="canonical": also a strong signal.
  • Sitemap inclusion: a weak signal.

Google weighs these signals with others, so it can still choose a different URL.

When "canonical points to another URL" is correct, and when it is a bug

This is the question most audits skip. The same finding can be fine or harmful.

Correct (the page really is a duplicate):

  • /shoes?utm_source=newsletter → canonical /shoes/
  • /shoes?sort=price → canonical /shoes/, if sorting doesn't change what the page is about
  • A printer-friendly version → canonical to the normal page

A bug (the page is unique and you want it in search):

  • Every page canonicalizes to the home page. This is a classic template mistake.
  • Every product canonicalizes to its category page.
  • Page 2, 3 and 4 of a paginated list all point to page 1, so the items only listed on later pages lose their path into the index.
  • The canonical still points at the staging host, at http://, or at a URL from before a migration.
  • The canonical is relative (/shoes) and resolves to the wrong place on some hosts.

Test each one with a single question: if Google drops this page and shows the canonical instead, do we lose anything? If the answer is yes, the tag is wrong.

Why it happens

  • Template copy-paste. One canonical value is hardcoded in a shared layout, so every page gets the same canonical.
  • CMS or plugin defaults. An SEO plugin and the theme both output a canonical, and the two disagree.
  • Migrations. URLs change, but canonical tags keep the old paths, which now redirect or return 404.
  • Environment leaks. Staging and production share a config value, so production pages point at the staging domain.
  • Mixed signals. The sitemap lists URL A, internal links go to URL B, and the canonical says URL C. Google's guidance is not to use different techniques that point to different canonicals for the same page.

How to find it

One page at a time

View the source, or fetch the HTML and look for the tag:

curl -s https://www.example.com/shoes/running/ | grep -io '<link[^>]*rel="canonical"[^>]*>'

Also check the HTTP headers. A canonical can be sent as a Link header, which is the normal method for PDFs and other non-HTML files:

curl -sI https://www.example.com/guide.pdf | grep -i '^link:'

In Search Console

  • URL Inspection shows the user-declared canonical (yours) and the Google-selected canonical. If they differ, Google disagrees with your tag.
  • The Page indexing report groups affected URLs under statuses such as Alternate page with proper canonical tag (usually expected), Duplicate, Google chose different canonical than user and Duplicate without user-selected canonical. Start with the second one: it lists the pages where Google rejected your choice.

With a crawler

A crawler checks every page it reaches and compares the canonical with what is actually at that URL. SiteOptima reads the canonical declared in each crawled page's HTML and reports, with the evidence for each URL:

  • pages with no canonical, or more than one;
  • canonicals that point to another page;
  • canonical chains and loops;
  • canonicals whose target redirects, fails, is noindex or doesn't exist in the crawl;
  • canonicals that point to another domain;
  • pages listed in the sitemap that canonicalize somewhere else.

It shows the finding and the fix. It does not change your site.

How to fix it

  1. Decide which pages are unique. Make a list of pages that should appear in search on their own. Each of them should have a self-referencing canonical: the page points to itself. Google's documentation recommends this.
  2. Point real duplicates straight at the final URL. The target must return 200, be indexable (no noindex), and not redirect. Don't chain canonicals (A → B → C). Point A directly at C.
  3. Use absolute URLs. Write https://www.example.com/shoes/, not /shoes/. Never use a URL fragment (#section) as the canonical.
  4. Put the tag in the <head>. Google only accepts rel="canonical" there. If a script or a stray tag closes the <head> early, the canonical can end up in the <body> and be ignored.
  5. Pick one method per page. Use the HTML tag or the HTTP header, not both, unless you are sure they always match.
  6. Align the other signals. Use the canonical URL in internal links, in the sitemap and in your hreflang annotations.
  7. Don't use the wrong tools. Don't use robots.txt to canonicalize: blocked URLs can still be indexed without their content. Don't use noindex to pick a canonical within a site, because it removes the page from search completely.

A common template fix in a shared layout looks like this:

<!-- Before: hardcoded, every page points to the home page -->
<link rel="canonical" href="https://www.example.com/" />

<!-- After: each page declares its own clean URL -->
<link rel="canonical" href="https://www.example.com{{ page.path }}" />

Make sure the template builds the clean path, without tracking parameters, so the tag doesn't copy them.

How to check it is fixed

  1. Re-fetch the HTML of a sample of affected pages and confirm the tag is in the <head> with the expected absolute URL.
  2. Check that each target is final. Run curl -sIL on the canonical URL: you want 0 redirects and a 200.
  3. Re-crawl the site. Template bugs affect whole page types, so check them all, not a sample. Compare the canonical findings before and after.
  4. Inspect a few URLs in Search Console and check that the Google-selected canonical now matches yours. Google decides when to recrawl, so this can take days or weeks. The Duplicate, Google chose different canonical than user group in Page indexing should shrink over time.

SiteOptima is built around step 3: run an audit, apply the fix outside the tool, then run it again and see which canonical findings are resolved and which are still open.

Checklist

  • List of unique pages that must be indexed
  • Unique pages have a self-referencing canonical
  • Duplicates point directly to a final URL that returns 200
  • No canonical chains or loops
  • Canonical targets are not noindex and do not redirect
  • Absolute URLs, correct protocol and host, no fragments
  • Exactly one canonical per page, inside <head>
  • Internal links, sitemap and hreflang use the canonical URLs
  • No robots.txt or noindex used to choose canonicals
  • Site re-crawled and URL Inspection shows Google agrees

FAQ

Is "canonical points to another URL" always an error?

No. It is the expected setup for parameter, print and other duplicate versions. It is an error when the page is unique and you want it to rank.

Will Google always follow my canonical tag?

No. Google treats it as a strong signal, not a directive, and can choose a different URL. URL Inspection shows which one it chose.

Should every page have a self-referencing canonical?

Google's documentation recommends one on the canonical page itself. It protects the page when someone links to it with extra parameters.

Canonical or 301 redirect?

If people never need to see the old URL, a permanent redirect is the cleaner fix. Use a canonical when both versions must stay reachable, such as filtered or tracked URLs.

Can I canonicalize to a page on another domain?

Yes, for real syndicated or mirrored content. If you didn't plan it, a cross-domain canonical is usually an environment or migration mistake.

Sources