How to Remove index.php from Joomla URLs

Confirm SEF URLs already work

Before removing index.php, enable Search Engine Friendly URLs in System → Global Configuration → Site and test the site. Joomla routing should work with SEF paths first. If ordinary SEF URLs already fail, fix that problem before adding server rewriting; otherwise two separate routing problems become difficult to distinguish.

Identify the web server

The server must internally route clean paths to Joomla index.php. Apache commonly uses Joomla’s htaccess.txt renamed to .htaccess with mod_rewrite available. Nginx commonly uses a try_files fallback to /index.php?$args. IIS uses the URL Rewrite module and web.config. Do not apply Apache instructions to Nginx or IIS.

Prepare the server rewrite layer

Use the Joomla-distributed or officially documented rewrite configuration appropriate for the server and deployment path. Preserve any existing security or hosting rules. The goal is not to delete index.php; the web server still uses it internally as Joomla’s front controller even though visitors no longer see it in the route.

Enable Use URL Rewriting in Joomla

After the server rule is ready, open Global Configuration and enable Use URL Rewriting. Save, then open several frontend links in a fresh browser tab. Joomla should now generate paths without index.php. If all clean paths fail, turn the setting back off while troubleshooting the server rule.

Consider Joomla’s SEF redirect option

Current Joomla SEF behavior includes an option in the System - SEF plugin to forcibly remove index.php with redirects. Where appropriate, this can redirect requests that still contain index.php to the clean equivalent. Test it only after clean routing is stable so you do not add redirects on top of a broken rewrite configuration.

Update internal and external references carefully

Joomla-generated links should follow the active router settings, but hard-coded links in content, templates, integrations, sitemaps, advertising, or external systems may still contain index.php. Do not mass-replace URLs until you know which old routes resolve correctly and which should receive explicit redirects.

Verify status codes and canonical behavior

Test a clean route, its older index.php form, nested menu paths, assets, and a nonexistent path. Use browser developer tools or an HTTP checker to confirm expected 200, 301, and 404 responses without redirect chains or loops. Keep one canonical HTTPS host and one canonical Joomla route for important pages.


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