Canonical Pointing to a Redirect: Example
I directed all my letters to my horse on the church steeple, and the horse had since come down.
The short answer
- What it is
- This issue occurs when the URL in a canonical tag returns a redirect. The tag names one URL as the main version, but that URL sends visitors to another.
- Why it matters
- The tag and the redirect give search engines mixed signals about the main URL. The engine may ignore your tag and pick a URL on its own.
- How a crawler should report it
- A crawler should show a canonical to redirect warning with the source page, the canonical URL, its 3xx status, and the final URL. The page should also count as canonicalized.
- Live examples
/lab/canonical-to-redirect/(positive), on the second shelf/lab/canonical-to-redirect/near-miss/(near miss), on the second shelf

Why the URL in a canonical tag should be the final address
A canonical points to a redirect when the href in the tag returns a 301, 302, or other 3xx status. The tag says that this URL is the main one. The server says that it has moved. The mismatch often comes from a site move. New paths go live, but the tag still holds the old form. Forcing HTTPS, changing the trailing slash, or dropping www can do the same thing.
Browsers do not check the tag, so visitors see nothing wrong. A search engine does check. It may follow the redirect and treat the final URL as the main one, which is often what you meant. But the tag is just a hint, and this hint is unclear. The engine can pick another URL from the group, or ignore the tag. It also has to make an extra fetch each time, with no gain at all.
To detect it, collect every canonical URL in a crawl and request each one without following redirects. Any 3xx response is a problem. Record the status and the place where the chain ends. In this lab, a page points to a URL that gives a 301. A clean page points to the final URL, so only the normal canonicalized notice appears. Sort the results by template, since one bad setting can affect thousands of pages.
To fix it, change the tag so that it holds the final URL. The target should return a 200 status directly. Make the scheme, host, and trailing slash match your preferred form. Build the tag from the same setting that your site uses for its URLs, so it stays right after a move. Update your internal links and sitemap as well. Then crawl again to confirm that no canonical URL still redirects.