The canonical tag error was the most common finding, appearing on 31 of the 47 sites. The typical error was missing canonicals on paginated listing pages — the second and third pages of a category archive had no canonical tag at all, causing search engines to treat each as a unique page. JekCMS generates canonicals automatically, but the SITE_URL constant must match the live domain exactly, including the https:// prefix and any www prefix.

Hreflang: The Reciprocal Link Problem

Hreflang misconfigurations came second, affecting 24 sites. The typical error was a Turkish language page referencing an English hreflang URL that did not exist — creating an orphaned pair. Both the x-default tag and each language variant must reference the other in their respective hreflang declarations. A missing reciprocal link invalidates both sides. Google Search Console reports this as a "Return tag missing" error.

Sitemaps Pointing to Redirects

Sitemap issues were the third major finding. Several sites had sitemap.xml entries pointing to URLs that return 301 or 302 redirects rather than 200. Search engines follow these redirects when crawling, but they record the final destination URL as the canonical — not the URL listed in the sitemap. Regenerate your sitemap after any URL structure change.

Migration History Matters

The industries with the highest density of errors were news sites and e-commerce integrations — both categories had migrated from other platforms and inherited structural problems. Fresh JekCMS installations with no migration history had on average 2.1 errors per site, compared to 9.4 for migrated sites.

Error Breakdown by Category

The 312 errors across 47 sites break down into five categories. Understanding the distribution helps prioritize which fixes to apply first.

  • Canonical tag issues (98 errors, 31.4%): Missing canonicals, self-referencing canonical pointing to HTTP instead of HTTPS, canonical on pagination pages pointing to page 1 instead of self
  • Hreflang issues (72 errors, 23.1%): Missing reciprocal links, orphaned language pairs, x-default pointing to a non-existent URL
  • Sitemap issues (58 errors, 18.6%): URLs returning 301/302 redirects, stale entries for deleted posts, missing lastmod timestamps
  • Schema markup issues (49 errors, 15.7%): Missing required fields in Article schema, incorrect datePublished format, broken image URLs in schema
  • Robots and crawlability (35 errors, 11.2%): Overly restrictive robots.txt blocking CSS/JS, missing robots meta on noindex pages, conflicting directives

Fixing Canonical Tags in JekCMS

The canonical tag fix requires verifying a single configuration value. Open config/config.php (or your .env file) and confirm that SITE_URL matches the exact URL visitors use — including the protocol and any www prefix. The most common misconfiguration is setting SITE_URL to http://example.com while the live site redirects to https://www.example.com.

// WRONG: Protocol mismatch creates duplicate canonicals
define('SITE_URL', 'http://example.com');

// WRONG: www mismatch
define('SITE_URL', 'https://example.com');
// ...while the server redirects to https://www.example.com

// CORRECT: Matches the final resolved URL exactly
define('SITE_URL', 'https://www.example.com');

Pagination Canonical Strategy

JekCMS v1.4.0+ sets the canonical on paginated pages to the current page URL (self-referencing), not to page 1. This is the approach recommended by Google since 2019. If your installation is on v1.3 or earlier, paginated pages either have no canonical or point to page 1 — both are suboptimal. Upgrading to v1.4.0 resolves this automatically.

Schema Markup Validation

Of the 49 schema errors, 31 were missing required fields in the Article schema — typically author.name or image. JekCMS's output_schema() helper generates schema automatically, but it requires the post to have a featured image set and the author record to have a name field populated. Posts without featured images generate an Article schema without an image property, which triggers a warning in Google's Rich Results Test.

The 10-Minute Audit Checklist

Based on the patterns from our 47-site audit, here is a quick checklist that catches the most impactful issues:

  • Run curl -I https://yoursite.com/ and verify the canonical in the HTML matches the URL exactly
  • Check sitemap.xml for any URL that returns a non-200 status code
  • Open Google Search Console Coverage report and filter for "Duplicate without user-selected canonical"
  • Validate a sample post URL in Google's Rich Results Test for schema completeness
  • Verify robots.txt does not block /assets/ or /themes/ directories (CSS/JS must be crawlable)
  • For multi-language sites, confirm every hreflang tag has a reciprocal link on the target page

Automated Monitoring After the Audit

Fixing errors once is not enough — the same issues tend to reappear after content updates, URL restructuring, or CMS upgrades. We recommend setting up a recurring automated check using JekCMS's built-in php tools/seo-check.php command, which validates canonical tags, sitemap status codes, schema markup completeness, and robots directives in a single pass. Run it weekly via cron and pipe the output to a log file or a Slack webhook for immediate visibility.

On the 47 sites in our audit, teams that adopted weekly automated checks reduced their recurring error rate by 84% over a three-month follow-up period compared to teams that relied on manual spot-checks.

The command exits with a non-zero status code when errors are found, making it straightforward to integrate into CI/CD pipelines or monitoring dashboards that alert on failure. Combining automated weekly scans with a quarterly manual review of Google Search Console data provides comprehensive coverage without creating excessive maintenance overhead for small teams.