Joomla 3 SEF URLs: diagnose 404s, routing and redirect loops
- Joomla
- September 3, 2025
Table of contents
When a Joomla 3 SEF URL returns a 404, establish whether the request reaches the CMS and whether Joomla can resolve it to the intended content. A server rewrite failure, changed alias and broken component router can produce similar pages but need different fixes.
Preserve the full address before changing configuration or menus. Record the expected page, HTTP status, redirects and when the failure began. The objective is to restore useful routes without unnecessary URL changes.
Separate SEF URLs, rewriting and routing
SEF URLs make CMS-generated addresses readable. Server rewriting directs requests to Joomla without displaying index.php when configured accordingly. Routing interprets the path and selects the component, view and navigation context.
The Joomla URL documentation explains the role of Itemid, which identifies a menu item rather than an article. Confusing these identifiers can lead to comparing requests with different contexts.
| Evidence | Investigation scope |
|---|---|
Path with index.php works but rewritten path fails | Server rules and installation location |
| Only one section returns 404 | Menu, aliases and component router |
| Several redirects before content loads | Redirect configuration |
| Page loads with unexpected modules | Menu-item context and assignments |
| Address works only after login | Access and content availability |
Reconstruct a valid test request
Start with a site-generated link or verified content and menu records. Confirm that the article exists, is published and has the expected language and access, and that its alias or location has not changed.
On a protected copy, compare SEF and rewriting settings one at a time while retaining the original configuration. Use the same content and menu context. An invented address with arbitrary identifiers is not a valid diagnostic comparison.
If a path works without rewriting and fails with it, the investigation has narrowed. If the corresponding application request also fails, inspect content, permissions and the component before server rules.
Check Apache, .htaccess and other server arrangements
On Apache, confirm that required directives are permitted and that the active file is actually .htaccess. Joomla’s distributed htaccess.txt is a reference, not evidence that rewriting is enabled. The Apache documentation explains configuration controls including AllowOverride.
Preserve the active file and inventory redirects, protections and provider rules before editing. Do not replace it wholesale with a standard copy without reviewing customisations. For a subdirectory installation, verify that rule paths match the actual location.
Nginx does not interpret .htaccess, and other servers can use different mechanisms. Ask the host which layer receives and rewrites the request, especially behind proxies. Server logs may identify the fault before any CMS change is necessary.
Examine menus, aliases and component routers
Inspect the menu item generating the link: type, destination, language, state and alias. Check whether a recent change altered its navigation context or hierarchical path.
For third-party components, consult documentation for the installed release and test an address the component actually generates. Its router may fail independently of global server rules. If several menus expose the same content, first decide which route should be primary.
In a hypothetical example, one article loads through two menus but displays different modules. The content may be correct while menu context changes module assignments. Identify that difference before concealing it with a broad redirect.
Follow redirect chains to locate loops
Use the browser Network panel to record each redirect and its destination. Compare hosting rules, HTTP/HTTPS handling, preferred hostname, SEF plugins and application redirects.
A loop can arise when two layers impose opposite decisions. Identify both rules and retain one consistent destination. Clearing cache can help verification but does not correct a contradiction that remains configured.
When an address genuinely changes, choose a relevant replacement and a redirect suited to the change. Google’s redirect documentation distinguishes permanent and temporary moves. Sending every missing URL to the homepage hides broken paths without delivering the expected content.
Record the initial address as well as the final one. A correct destination reached through unnecessary or contradictory intermediate steps is still worth investigating.
Test language and restricted-content contexts
For multilingual sites, record content language, menu language, generated path and intended associations. Reproduce a language-specific failure in that context instead of testing only the default homepage.
If behaviour differs by user, examine Joomla 3 viewing access. Making private content public to remove an anonymous visitor’s error changes the access requirement rather than resolving the route correctly.
Validate URLs and metadata after correction
Keep a representative URL list covering the homepage, categories, articles, component pages and language versions. Check final status, redirect steps, content, canonical and generated links. Confirm that a genuinely nonexistent address still behaves appropriately as a missing resource.
Joomla 3 is unsupported. Retain the URL map for migration. If your site has 404 errors or loops, I can review Joomla routing and redirects to correct the affected layer while preserving useful addresses.























