CanonicalTag.com logoCanonicalTag.comThe canonical tag & URL canonicalization
CMS PlatformCMS & Website Platforms

Canonical URLs in All in One SEO

AIOSEO builds on WordPress's own canonical output, adding per-page overrides, a pagination setting, and a developer filter for the rest.

Does All in One SEO add canonical tags automatically?

All in One SEO, usually shortened to AIOSEO, is refreshingly candid about this in its own documentation: WordPress does a great job of outputting the canonical URL for your content, and All in One SEO just supplements WordPress by adding some advanced features. That's an important starting point, because the canonical tag on an AIOSEO site isn't purely an AIOSEO invention, it's a layered system.

WordPress core already outputs a self-referencing canonical tag on singular content, meaning single posts and pages, through its built-in canonical function hooked into the site's head output. AIOSEO layers on top of that: it manages and normalizes the canonical output, extends canonical tags to content types and archive pages that core doesn't fully cover, respects a per-post override you set manually, and adds pagination handling that core doesn't attempt on its own. The practical result for a site owner is that indexable content, posts, pages, custom post types, and archive or taxonomy pages, ends up with self-referencing canonicals, with AIOSEO effectively in control of what gets output once it's active.

Hedge: because AIOSEO describes itself as supplementing core rather than fully documenting every page type it emits a canonical on, it's safer to treat self-referencing everywhere by default as the practical, observed outcome rather than a guaranteed per-page-type promise. If a specific archive type matters for your site, verify the actual output on the version you have installed.

Where to set a canonical override in AIOSEO

AIOSEO gives you the same kind of per-page override Rank Math does, under its own naming. Open the post, page, or custom post type you want to edit, and scroll down to the AIOSEO Settings meta box beneath the content editor. Click into the Advanced tab, and you'll find a Canonical URL field there. Enter the full URL you want that page to canonicalize to, and AIOSEO outputs it in place of the automatic self-referencing canonical.

Leave the field blank and nothing changes from the default behavior described above, WordPress core and AIOSEO together auto-generate the self-referencing canonical for that URL. Fill it in, and you've told AIOSEO explicitly which URL should receive credit for that content instead. As with any override field, a value here always wins over the automatic behavior, so it's worth double-checking what you typed before saving.

Site-wide canonical settings

Beyond the per-page override, AIOSEO exposes canonical behavior at the site level under AIOSEO, then Search Appearance, then Advanced. The setting to know here is No Pagination for Canonical URLs. When you enable it, the canonical tag on paginated pages, page 2, page 3, and beyond, stops self-referencing and instead points back to the first page of that series.

Treat this as a deliberate consolidation choice, not a default best practice. It runs contrary to Google's current guidance, which favors letting each paginated page self-canonicalize because each page typically holds different content that deserves its own chance to be crawled and indexed. Turning on No Pagination for Canonical URLs tells Google to essentially defer to page 1, which can hide products, posts, or listings that never appear on that first page.

There's also a documented historical bug tied to this setting: in certain configurations, No Pagination for Canonical URLs has produced a canonical pointing to a 404 page, tracked in AIOSEO's GitHub issue history. That's not necessarily a reason to avoid the setting if consolidation is genuinely what you want, but it is a reason to verify the actual output, view source on a few paginated URLs, after you flip it, rather than assuming it works exactly as described.

Exact label wording and where it sits inside the Search Appearance menu can shift slightly between AIOSEO versions, so confirm the setting's current location and name on the version you're running.

Controlling canonicals with a filter

For scenarios the settings screens don't cover, AIOSEO provides a developer filter: aioseo_canonical_url. It receives the canonical URL AIOSEO is about to output and lets you change it, or suppress it, in code.

add_filter( 'aioseo_canonical_url', function ( $url ) {
    // Return a modified URL, or '' to suppress the canonical tag entirely
    return $url;
});

AIOSEO's own documentation recommends adding this snippet through a code-snippet plugin such as WPCode rather than editing plugin files directly, so the change survives updates. A common documented use of this filter is preventing AIOSEO from outputting a canonical tag at all for specific content, returning an empty or false value inside the callback, guarded by a condition such as a post type check or a URL pattern match, and AIOSEO skips the tag for those pages.

This filter is the right tool when you need logic the Canonical URL field can't express, for instance computing a canonical dynamically based on a custom taxonomy term, or suppressing canonicals sitewide on a staging environment.

Common AIOSEO canonical mistakes

Most AIOSEO canonical problems trace back to a handful of recurring habits.

  • Assuming AIOSEO alone creates every canonical tag on the site. WordPress core already handles self-referencing canonicals on singular content, and AIOSEO supplements it, so disabling or replacing AIOSEO without accounting for that core behavior can change canonical output in ways that surprise you.
  • Turning on No Pagination for Canonical URLs because it sounds like a best practice. It points paginated pages back to page 1, which conflicts with current Google guidance and can hide deeper paginated content from indexing, and it has a documented history of producing 404-pointing canonicals in some setups.
  • Pasting the wrong URL into the per-post Canonical URL field, which silently canonicalizes a page to the wrong target.
  • Believing a canonical URL passes link equity the way a redirect does. AIOSEO's own FAQ clarifies that the canonical URL simply receives full credit; it's a consolidation signal, not a redirect, and the original URL still exists and can still be crawled.
  • Mixing a canonical pointing elsewhere with a noindex tag on the same URL, which sends conflicting instructions to search engines.

Frequently Asked Questions

Does AIOSEO replace WordPress's built-in canonical tag?

Not exactly. WordPress core already outputs a self-referencing canonical on singular content, and AIOSEO supplements and extends that output rather than starting from scratch, effectively taking control of the canonical once it's active.

What does "No Pagination for Canonical URLs" actually do?

When enabled under AIOSEO, Search Appearance, Advanced, it makes paginated pages canonicalize back to page 1 of the series instead of self-referencing their own URL. It's a deliberate consolidation choice that runs contrary to Google's current pagination guidance, and it has a documented history of occasionally producing a canonical pointing to a 404 page.

Where do I find the per-post canonical override in AIOSEO?

In the AIOSEO Settings meta box on the post or page editor, under the Advanced tab, in the Canonical URL field. Leave it blank for the automatic self-referencing canonical, or enter a full URL to override it.

Can I stop AIOSEO from outputting a canonical tag on a specific page?

Yes, using the aioseo_canonical_url filter. Return an empty or false value from the callback, guarded by a condition for the specific content you want to affect, and AIOSEO will skip outputting a canonical tag there.

Does setting a canonical URL in AIOSEO act like a 301 redirect?

No. AIOSEO's own FAQ is clear that a canonical URL simply receives full ranking credit; the original URL remains live and crawlable. A canonical is a consolidation hint to search engines, not a redirect that sends visitors or bots to a new address.