How to Fix Joomla SEF URLs Not Working

Determine which SEF stage is failing

First test with Search Engine Friendly URLs enabled and Use URL Rewriting disabled. If readable URLs containing index.php work, Joomla's SEF router is functioning and the failure is probably server rewriting. If SEF routes themselves fail, investigate Joomla routing, menu aliases, extensions, and configuration before changing .htaccess.

Verify Joomla's SEO settings

Open System → Global Configuration → Site and review Search Engine Friendly URLs and Use URL Rewriting. Change one setting at a time and save. Do not enable rewriting simply because SEF is enabled; Joomla documentation treats rewriting as the separate server-dependent step used to remove index.php.

Check the active server configuration

For Apache, verify that Joomla's rewrite rules are active in .htaccess and that the server allows the needed overrides and rewrite module behavior. For Nginx, configure the virtual host to route non-file requests to Joomla's index.php. Do not copy Apache .htaccess directives into Nginx configuration.

Check Joomla's installation path

A Joomla site installed below the domain root can require different web-server handling from a root installation. On Apache, Joomla documentation notes that RewriteBase may sometimes need to reflect the subdirectory. Confirm the actual public path, document root, proxy configuration, and base URL before changing rewrite rules.

Test aliases and menu routing

Joomla's site router begins by matching URL path segments against menu-item aliases and then passes remaining segments to the component router. Check for duplicate or unexpected aliases, unpublished or inaccessible menu items, and extension routers that may be producing invalid routes. Test a simple core Content route as a baseline.

Clear only relevant caches and retest directly

After correcting configuration, clear Joomla and proxy/CDN caches that can preserve redirects or old pages, then request the failing URL directly. Test both a generated link and a manually entered clean URL. Browser navigation alone can hide a server-routing failure because an already loaded page may not reproduce the same request.

Use the HTTP status and logs to choose the next step

A 404 after removing index.php points strongly toward rewrite/routing configuration, while a 500 after enabling .htaccess suggests a server directive or configuration error. Redirect loops require examining redirect rules and proxy behavior. Preserve the exact URL, status, and timestamp and correlate them with Joomla and web-server logs.


Need More Help with Joomla?

Still having trouble? Open a support ticket with QuantaCade Support and we'll be happy to help where we can.

Support priority is given to QuantaCade products, services, and customers. However, we're also happy to assist fellow Joomla users with general Joomla questions and troubleshooting when possible.

QuantaCade is an independent Joomla extension developer and is not official Joomla support. Some issues involving third-party extensions, hosting environments, server configurations, or other systems outside our development control may be beyond what we're able to resolve.

Open a Support Ticket