How to Fix Broken URLs After Migrating Joomla
Classify the broken URLs before changing redirects
Collect representative failing URLs and their HTTP status codes. Determine whether they are Joomla SEF routes, media files, menu links, extension routes, or old-domain paths. A 404 after migration can come from Joomla routing, web-server rewriting, changed menu context, missing files, or an intentionally changed URL structure.
Confirm the site's base location and document root
Verify that the domain points to the directory containing Joomla's index.php and that Joomla was not accidentally placed one directory too high or low. If the site moved between a subdirectory and the domain root, review path-specific server rules and any RewriteBase configuration that still references the former location.
Test SEF URLs with rewriting isolated
If clean URLs fail, temporarily distinguish Joomla SEF routing from server URL rewriting. Test whether routes work with index.php present. On Apache, confirm Joomla's .htaccess rules are active; on Nginx, confirm the virtual host routes non-file requests to Joomla's front controller. Do not use Apache .htaccess instructions on Nginx.
Check menu aliases and internal links
Open important menu items and verify aliases, parent relationships, access, language, and publication state. Search articles, modules, template overrides, and custom HTML for hard-coded old paths or domains. Update internal links to the final preferred URL rather than relying on redirects for links Joomla itself controls.
Redirect legitimate old URLs to final replacements
When a former public URL has a clear new destination, create a direct permanent redirect using Joomla Redirects or the appropriate server layer. Avoid redirect chains and blanket redirects of every 404 to the home page. Preserve user intent by mapping each important old URL to its closest replacement.
Check media and extension-generated routes separately
A missing image or download is usually a filesystem/path problem rather than a Joomla menu-routing problem. Third-party extensions can also have their own routers, menu items, caches, or stored absolute URLs. Verify the relevant files exist and review the extension's migration documentation before altering its database data.
Crawl and monitor after repairs
Test representative old and new URLs as a logged-out visitor, clear only relevant caches, and inspect server logs for remaining 404s. Update canonical and sitemap output when public URLs changed. Continue monitoring high-value old URLs after DNS and search-engine caches have had time to refresh.
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.