Someone clicks a link to your site and lands on a blank page that says “404, page not found.” Maybe it’s a page you know exists. Maybe it’s your homepage. Either way, you’ve just lost a visitor, and if it’s happening across the site, you’re losing rankings too.
In my 10+ years building WordPress sites and running 950+ Fiverr client projects, a WordPress 404 error is one of the most common “my site is broken” messages I get from clients. The good news: it’s almost always fixable in under 10 minutes once you know where to look. Here’s exactly how to fix a WordPress 404 error, in the order I actually troubleshoot it.
Why WordPress 404 Errors Happen in the First Place
WordPress doesn’t store your URLs as real folders and files. Every time someone requests a page, WordPress looks up a set of rewrite rules and matches the URL to the right post or page. When that lookup table gets corrupted, or the server config that supports it breaks, you get a 404.
The usual triggers I see on client sites:
- A permalink structure change or a plugin update that touched rewrite rules
- A missing or corrupted
.htaccessfile (Apache hosting) - A site migration where old URLs weren’t redirected, something I cover in detail in my guide on migrating WordPress without downtime
- A plugin or theme conflict after an update
- Wrong file permissions on the server
Now let’s fix it.
Step 1: Reset Your Permalinks First
This fixes the majority of 404 errors I’ve dealt with, and it takes 15 seconds. Go to Settings → Permalinks in your WordPress dashboard. Don’t change anything. Just click Save Changes.
That click forces WordPress to flush and rebuild its rewrite rules from scratch. If your permalinks got out of sync with your actual posts and pages, this puts them back in order. Test a few links in an incognito window afterward, your browser may be holding onto a cached version of the old 404.
Step 2: Check Your .htaccess File
If resetting permalinks didn’t fix it, your .htaccess file is the next suspect. On Apache hosting, this file tells the server how to route every URL request to WordPress. If it’s missing, empty, or was overwritten by a caching plugin or security tool, your permalinks stop working even though the settings page looks fine.
Connect via FTP or your host’s file manager and check that .htaccess exists in your root WordPress folder with content that looks like this:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressIf it’s missing, create a new file, paste that in, save it as .htaccess, and re-upload. Make sure the file has correct permissions (644) so WordPress can write to it going forward.
Step 3: Rule Out a Plugin or Theme Conflict
If the 404s started right after you updated or installed something, that’s your first clue. Deactivate all plugins, then reactivate them one at a time, checking your site after each one. When the 404 comes back, you’ve found the culprit.
SEO plugins, caching plugins, and anything that touches custom post types or rewrite rules are the usual suspects. I always test this on a staging copy first, not the live site. If you don’t already have one set up, my guide to setting up a WordPress staging site walks through it in about 15 minutes.
Step 4: Find and Fix Broken Internal Links
Once your site itself is loading pages correctly, you still need to hunt down individual broken links, old blog posts linking to a page you deleted, an image URL that changed, a product you removed from WooCommerce. These won’t throw a site-wide 404, but they quietly leak traffic and SEO value one link at a time.
Two places to check:
- Google Search Console → Pages → look for “Not found (404)” under the indexing report. This shows every 404 Google has actually crawled on your site.
- A broken link checker plugin to scan your own internal links and flag anything pointing to a dead URL.
For any URL that changed on purpose, deleted a page, renamed a slug, merged two posts, set up a 301 redirect immediately. Don’t let it sit as a dead link. I treat this the same way I treat fixing a WordPress critical error: find the exact cause first, then apply the smallest fix that solves it, instead of reaching for a plugin that papers over the problem.
Step 5: Check File Permissions If Nothing Else Works
This one’s rare, but it happens after a botched migration or a host-level change. Your directories should be set to 755 (or 750) and your files to 644 (or 640). If permissions are wrong, WordPress can’t write the updated rewrite rules to .htaccess, no matter how many times you save the permalinks page. Your hosting provider’s support team can confirm and fix this in minutes if you’re not comfortable doing it yourself.
How to Stop 404 Errors From Coming Back
Fixing the current 404 is half the job. The other half is not creating new ones every time you touch the site:
- Always set up a 301 redirect when you delete or rename a page
- Test major plugin and theme updates on staging before pushing to production
- Check Search Console’s 404 report monthly, not just when someone complains
- Never change a permalink structure on a live site without a redirect plan
A WordPress 404 error is rarely a mystery. It’s almost always one of five things: permalinks, .htaccess, a plugin conflict, a leftover link from a migration, or file permissions. Work through them in that order and you’ll have it fixed before your coffee gets cold.
Frequently Asked Questions
Recurring 404s usually mean your permalink rewrite rules keep getting reset or overwritten, often by a plugin update, a caching tool rewriting .htaccess, or a theme conflict. If it happens repeatedly rather than as a one-time glitch, check what changed on the site right before each occurrence.
Go to Settings → Permalinks and click Save Changes without altering anything. This flushes and rebuilds the rewrite rules. If that doesn’t fix it, check whether the update also modified your .htaccess file, and confirm the plugin that triggered the update isn’t conflicting with your permalink structure.
No. Resaving the Permalinks settings only rebuilds the URL routing rules, it doesn’t touch your content, database entries, or media. It’s completely safe to click Save Changes as many times as you need to while troubleshooting.
Check the “Not found (404)” section under Pages in Google Search Console for links Google has already crawled, and run a broken link checker plugin to scan your own site for internal links pointing to dead URLs. Between the two, you’ll catch both what search engines see and what’s hiding in your own content.
This usually points to a static front page setting that’s misconfigured under Settings → Reading, or a “Homepage” page that got deleted or unpublished while a different page is still assigned as the front page. Check that setting first before touching permalinks or .htaccess.

Leave a Reply