Contao Frontend Pagination: 404s, Repeated Page 1, and Missing Links
Diagnose Contao list and news module pagination failures: page-2 404s, repeated page 1, and disappearing links, with ordered checks and version-safe fixes.
26 Sept 2026, 05:41 UTC

Recognize the condition
On a published Contao list or news module, one or more of the following happens:
- Clicking page 2 returns a 404 error.
- Page 2 loads but repeats the content of page 1.
- Pagination links do not appear even though enough records exist.
- Links work for logged-in members but fail for guests.
Cause and diagnostic table
| Symptom | Most likely cause | First check |
|---|---|---|
| Page 2 returns 404 | Wrong pagination root page, missing alias, or stripped query string | Inspect the page-2 link in page source |
| Page 2 repeats page 1 | Unrecognized pagination parameter or stale cache | Compare the URL parameter with your Contao release |
| Pagination links missing | Too few items, pagination disabled, or custom template | Check items per page and template overrides |
| Member links work, guest links fail | Access-protected pagination root page | Check page visibility and permissions |
Ordered checks
- Reproduce in a private window. Open the list page as a guest with enough records to span two pages, using Contao’s standard template.
- Inspect the generated page-2 link. View page source and note the target page alias and the parameter name and value, such as ?parameter=2.
- Verify module settings. In the Contao backend, confirm items per page, pagination enabled, any archive or date filter, and the selected pagination root page.
- Confirm the target page is public. Open the root page directly in a private window. It must be published and visible to the same audience as the list page.
- Trace the query string through proxies. Request the page-2 URL directly and check whether the parameter survives web server, load balancer, and CDN rewrite rules.
- Purge caches and isolate custom code. Clear Contao and page caches, then CDN cache. Temporarily switch to the standard template and disable third-party extensions one at a time.
Fixes tied to findings
Wrong root page or alias
Select the intended published page as the pagination root page in the module settings. Correct the page alias if it changed after the module was configured. Save the module and clear the page cache.
Stripped or rewritten query parameter
Update proxy, load balancer, or CDN rules so the pagination query parameter is forwarded unchanged. Do not rewrite it to a path segment unless Contao is explicitly configured to accept that format.
Repeated page 1
Use the parameter name shown in the generated markup for your Contao release. Purge application and CDN caches after changing the parameter or root page.
Missing links
Increase items per page or add records until two pages exist. Enable pagination in the module. If a custom template removes the pagination markup, restore the standard template or re-add the markup.
Guest-facing 404 on member pages
Do not remove access protection to fix the link. Either grant guest access to the root page intentionally, or point the module to a public archive page.
Example: checking whether the query parameter survives
Run this from a terminal on any host that can reach the site:
curl -i 'https:///?=2'
Where to run: your workstation or a server with network access to the site. Permissions: none for this read-only request; no Contao login is required. Placeholders: replace , , and with values from your generated link.
Expected checks: the response should return HTTP 200, contain page-2 content, and keep the query parameter in the request. A 404 means the root page or alias is wrong; a 301 or 302 to the homepage often means a proxy stripped the parameter.
Risk: some web application firewalls handle unusual query strings differently. If curl is blocked, repeat the check in a browser private window and compare the network tab.
Limitations
This guide covers Contao’s built-in frontend pagination for list and news modules. It does not cover custom extensions, headless setups, or multilingual domain routing unless they use the standard module. The pagination parameter name varies by Contao release and custom configuration; verify it in your generated markup before changing proxy rules.
Practical verification: create a test module using the standard template with at least 11 records and items per page set to 10. Open page 2 in a private guest window. If it works there but not on the production page, compare templates, filters, and root-page settings.
Escalation criteria
Escalate to a developer or Contao support channel when:
- A verified page-2 URL still returns 404 under the standard template after configuration and cache checks.
- The request returns HTTP 500 errors, which point more strongly to template or extension incompatibility than pagination settings.
- Multiple modules fail together, suggesting a global rewrite or cache problem.
Include Contao and PHP versions, the exact request URL, relevant web and proxy logs, and a list of installed extensions.
Rollback for state changes
Changing module settings, templates, or cache behavior changes site state. To undo a setting, re-enter the previous values and save. Cache purges repopulate as traffic returns; no database rollback is required for configuration changes.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.