Joomla on LiteSpeed: CSS and JavaScript 403 errors with query strings Joomla 3 to Joomla 6 with T3 and Purity III: a migration case study Website hacked? What to do first and mistakes to avoid How to import Excel into WordPress with a custom plugin ChatGPT Ads: Paid Advertising Is Challenging Google Ads Ecommerce localization in Italy: catalogue, checkout and technical support Italian web developer for website support and local coordination Italian website localization: more than translating web content Taking over an existing Italian website without rebuilding it Website localization in Italy: a technical guide for international companies WordPress Dashboard Won't Load: 8 Causes and How to Fix Them WordPress Not Working: What to Check Before Panicking WordPress Site Stuck After Update: How to Recover It WP-Admin Error 500: Common Causes and Effective Solutions How to Identify Which WordPress Plugin Is Really Slowing Down Your Site Without Guesswork Joomla on LiteSpeed: CSS and JavaScript 403 errors with query strings Joomla 3 to Joomla 6 with T3 and Purity III: a migration case study Website hacked? What to do first and mistakes to avoid How to import Excel into WordPress with a custom plugin ChatGPT Ads: Paid Advertising Is Challenging Google Ads Ecommerce localization in Italy: catalogue, checkout and technical support Italian web developer for website support and local coordination Italian website localization: more than translating web content Taking over an existing Italian website without rebuilding it Website localization in Italy: a technical guide for international companies WordPress Dashboard Won't Load: 8 Causes and How to Fix Them WordPress Not Working: What to Check Before Panicking WordPress Site Stuck After Update: How to Recover It WP-Admin Error 500: Common Causes and Effective Solutions How to Identify Which WordPress Plugin Is Really Slowing Down Your Site Without Guesswork

Joomla 3 SEF URLs: diagnose 404s, routing and redirect loops

Author Graziano De Maio - Gdmtech
I wish you a good read and remember: if after reading this article you need help, don't hesitate to contact me.
Author: Graziano De Maio | Founder of Gdmtech
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.

EvidenceInvestigation scope
Path with index.php works but rewritten path failsServer rules and installation location
Only one section returns 404Menu, aliases and component router
Several redirects before content loadsRedirect configuration
Page loads with unexpected modulesMenu-item context and assignments
Address works only after loginAccess 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.

Author Graziano De Maio - Gdmtech
I wish you a good read and remember: if after reading this article you need help, don't hesitate to contact me.
Author: Graziano De Maio | Founder of Gdmtech