Live This site runs Joomla 6.1.2
JoomClub

News, security and craft for the Joomla ecosystem

SEO

Where Joomla Sets a Canonical URL and Where You Must

A canonical link tells a search engine which of several similar URLs is the real one. Joomla does not emit one for you, so every decision here is yours: filtered listings, pagination and anything carrying query parameters.

What the core does, and does not

Less than most people assume. Joomla ships no canonical tag on a default install. The system SEF plugin can add one, but only when its Domain field is set — and the tag it then produces is the current URL with its query string intact, which consolidates nothing.

So start by looking: open an article, view source, search for rel="canonical". If it is absent, everything below is yours to implement.

Listings with parameters

This is where sites lose control. A category listing that accepts sort order, items per page, a filter or a search term produces a distinct URL per combination, all of them showing largely the same content:

/catalogue?limit=20&filter_order=title
/catalogue?limit=40&filter_order=title
/catalogue?limit=20&filter_order=price

Point all of them at the clean URL. In a template or a small system plugin:

use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;

$app = Factory::getApplication();
$doc = $app->getDocument();

if ($app->getInput()->getMethod() === 'GET' && $app->getInput()->get('filter_order')) {
    $doc->addHeadLink(Uri::base() . 'catalogue', 'canonical', 'rel');
}

Emit exactly one canonical. Two on a page is worse than none — search engines discard both and decide for themselves.

Pagination: do not collapse it

The frequent mistake is pointing every page of a paginated series at page one. Pages two and beyond hold content that exists nowhere else, and a canonical to page one asks search engines to drop it from the index.

Let each paginated page be canonical to itself. If you want one address for the whole series, provide a genuine view-all page and canonicalise to that — but only if it actually exists and loads acceptably.

Canonical is a hint, not an instruction

Search engines treat it as one signal among several, and they routinely ignore it when the page it points at is substantially different from the page carrying it. Canonicalising a product variant to an unrelated category page usually achieves nothing.

Which is also why canonical is the wrong tool for some jobs:

  • The page has genuinely moved — use a 301. A canonical leaves the old URL serving content.
  • The page should not be indexed at all — use a noindex robots meta tag. Canonical does not exclude anything.
  • The duplicate should not exist — fix the routing. A canonical patching over a structural problem still leaves crawlers spending their budget on URLs you did not want.

Get the URL itself right

Whatever you emit, keep it absolute, on your canonical hostname, on HTTPS, and consistent about the trailing slash. A canonical pointing at http://www.example.com/page/ while the site serves https://example.com/page creates exactly the ambiguity it was supposed to resolve.

Verify with the search engine's own report

Google Search Console shows the URL it selected as canonical alongside the one you declared. Where those disagree, the search engine has overruled you — and the reason is worth investigating, because it usually means the pages are more different, or more similar, than you assumed.