The front page of your WordPress site loads normally, but individual posts, pages, product pages, or archive pages return 404 errors. The URLs are correct and the content exists, but WordPress can’t route requests to them. This is almost always a permalink or .htaccess issue rather than missing content.
The one-step fix that resolves most cases #
Go to Settings > Permalinks in your WordPress Admin and click Save Changes without changing anything. This regenerates the .htaccess rewrite rules that WordPress uses to route pretty URLs to the correct content. On most Apache-based hosting environments, this resolves broken permalinks immediately.
If you’re on a server running Nginx instead of Apache, .htaccess isn’t used. The rewrite rules need to be set in the Nginx server configuration file, which requires hosting provider involvement. WordPress’s Site Health tool will note if Nginx-specific rewrite rules are missing.
What causes permalink rules to break #
The most common triggers: a plugin update that modified the .htaccess file and introduced a syntax error, a site migration where the .htaccess from the old host wasn’t updated for the new environment, WordPress being installed in a subdirectory with incorrect rewrite base settings, or a security plugin that added conflicting rewrite rules.
If saving permalinks doesn’t fix it #
If the 404 errors persist after saving permalinks, access your site’s root directory via hosting file manager or FTP and look at the .htaccess file. Compare it to the default WordPress .htaccess content (available in WordPress documentation). If the file has extra content that doesn’t look like standard WordPress rewrite rules, a plugin may have added conflicting rules. Try renaming .htaccess to .htaccess_old and saving permalinks again. WordPress will create a clean .htaccess file. If the 404s disappear, the old .htaccess had the problem.
How Loupely helps #
Broken permalinks produce 404 responses that WordPress logs as failed requests. A Loupely diagnosis on a 404-returning URL captures those request failures alongside any PHP Errors in the hook chain. If a plugin is interfering with the routing at the PHP level (for example, a membership plugin redirecting before the rewrite rules can fire), Loupely’s Hook Execution data will show where in the chain the request was intercepted. This is more specific than the .htaccess trial-and-error approach when a plugin conflict is the actual cause.
