Every WordPress site collects 404 errors. Some are harmless: a bot guessing at /wp-login.php.bak, or someone mistyping a URL. Others quietly cost you visitors and links: an old blog post that was renamed, a product that was deleted, a menu item pointing at a page that no longer exists.

This guide shows you how to find the 404s that matter, decide what to do with each one, and set up a free 404 monitor and redirect manager so the problem stays under control.

Why 404 errors happen on WordPress

A 404 ("Not Found") is what your server returns when nothing exists at the requested URL. On WordPress, the usual causes are:

  • Changed slugs. You edit a post title and the permalink changes from /best-tea-shops/ to /tea-shops-rajkot/. Every old link to the first URL now breaks.
  • Deleted posts, pages or products. Common after a content clean-up or when stock is discontinued.
  • Changed permalink structure. Switching from /2024/05/post-name/ to /post-name/ breaks every dated URL at once.
  • Typos in links. In your own menus and posts, or on other sites linking to you.
  • A migrated site. Old URLs from a previous platform, such as .html pages or ?p=123 style links.
  • Bots probing. Scanners request paths like /.env or /old-admin/ looking for weaknesses. These are noise.

Which 404s actually need fixing?

Not every 404 is a problem. A useful rule:

  • Fix it if the URL used to have content, receives real visitors, has links from other sites, or is linked from your own pages.
  • Ignore it if it is a random bot probe, a nonsense URL nobody links to, or a page that never existed.

Google is explicit that 404s on URLs that should not exist do not harm the rest of your site. A 404 is the correct answer for a page that is gone. The goal is not "zero 404s"; it is "no useful traffic or links landing on a dead end".

301, 302, 307 or 410: which one?

CodeMeaningUse it when
301Moved permanentlyA slug changed, posts were merged, a page moved for good
302Found (temporary)A page is temporarily elsewhere, such as a seasonal sale page
307Temporary, method preservedLike 302, but guarantees the request method is kept (relevant for forms and APIs)
410GoneThe content was deliberately removed and has no replacement

For SEO, the 301 is the workhorse. It tells search engines to transfer the old URL's signals to the new one and to index the new address. Use 410 when you want to say clearly, "this was removed on purpose".

Three mistakes to avoid

Redirect chains

A chain is A → B → C. It happens when you redirect an old URL to a page that is itself later redirected. Each hop slows the visitor down, and crawlers may give up after several. When you add a new redirect, update older ones to point straight at the final URL.

Redirect loops

A loop is A → B → A. The browser shows "too many redirects" and the page never loads. Loops usually come from a regex rule that matches its own target. Always test new rules in a private window.

Redirecting everything to the homepage

It is tempting to send every broken URL to the homepage. Don't. A visitor looking for "blue cotton kurta" who lands on your homepage has not been helped. Google commonly treats these as soft 404s, so you get no SEO benefit either. Redirect to the closest relevant page, or let the URL return a 404 or 410.

How to find 404 errors

In Google Search Console

  1. Open your property in Google Search Console.
  2. Go to Indexing → Pages.
  3. Under "Why pages aren't indexed", click Not found (404).
  4. Review the example URLs. Use URL Inspection on any of them to see where Google found the link.

Search Console is valuable because it shows what Google has seen, but it is delayed by days and only covers URLs Googlebot has crawled.

In your server logs

Your hosting control panel usually gives access logs. Search them for 404 to see every request that failed, including the referring page. It is thorough, but reading raw logs every week is tedious.

With a 404 monitor plugin

A 404 monitor records broken requests as they happen, inside your WordPress dashboard. This is the most practical option for most site owners.

Creating a redirect manually

If you prefer not to use a plugin, you can add redirects at the server level.

On Apache (most shared hosting in India), add lines to the .htaccess file in your site root, above the # BEGIN WordPress block:

Redirect 301 /best-tea-shops/ https://example.com/tea-shops-rajkot/
Redirect 410 /old-offer-page/

Take a backup of .htaccess first. One typo can take the whole site down with a 500 error.

On Nginx, .htaccess is ignored. Redirects go in the server configuration, for example location = /best-tea-shops/ { return 301 /tea-shops-rajkot/; }, followed by a reload. On managed hosting, you usually have to ask support to add it.

Manual redirects are fast, but they live outside WordPress, so editors cannot see or manage them, and nothing records new 404s for you.

Doing it with Impex Rank SEO (free)

Impex Rank SEO is a free WordPress SEO plugin with a 404 monitor and a redirect manager built in, under Impex Rank SEO → Redirects & 404. There is no paid tier for either.

The 404 monitor

Once the plugin is active, every 404 on your site is logged. For each broken URL you see:

  • the URL that was requested,
  • the hit count, so repeated misses rise to the top,
  • the referrer, which tells you which page or site contains the broken link,
  • the user agent, which helps you separate real browsers from bots,
  • when it was last seen.

Any logged URL can become a redirect with one click. You can clear the log when you have worked through it.

The redirect manager

Add redirects with a source path and a target, choosing 301, 302, 307 or 410. Regex rules are supported for patterns, such as moving a whole old folder. Regex is powerful and easy to get wrong, so test a new pattern against one URL first; a loose pattern can capture far more than you intended.

Automatic redirects you get for free

  • Slug changes. When you change the slug of a published post or page, the plugin creates a 301 from the old URL to the new one automatically. If a redirect already existed for the old path, it is updated instead of duplicated, which helps prevent chains.
  • Attachment pages. WordPress creates a thin page for every uploaded image. The plugin redirects those attachment URLs to the parent post (or to the homepage if there is none). You can switch this off under Tools.

More detail is in the redirects documentation.

A 10-minute weekly 404 routine

  1. Open Redirects & 404 and sort by hits.
  2. For each URL with real hits, check the referrer. If it is your own page, fix the link at the source.
  3. If the content moved, create a 301 to the closest relevant page.
  4. If it was removed on purpose, create a 410.
  5. Ignore obvious bot probes.
  6. Check that no new redirect points at a URL that is itself redirected.
  7. Clear the log so next week starts fresh.
  8. Once a month, compare with the Not found (404) list in Search Console.

Frequently asked questions

Do 404 errors hurt my WordPress site's SEO?

A 404 for a page that genuinely never existed is normal and harmless. The damage comes from 404s on URLs that used to work, have backlinks or are linked from your own pages, because visitors hit a dead end and the value of those links is lost.

Should I redirect all 404 pages to the homepage?

No. Sending unrelated broken URLs to the homepage confuses visitors, and Google usually treats it as a soft 404 anyway. Redirect each URL to the closest relevant page, or let it return 404 or 410 if nothing relevant exists.

What is the difference between a 301 and a 302 redirect?

A 301 says the page has moved permanently, so search engines should index the new URL. A 302 or 307 says the move is temporary and the old URL will come back. For changed slugs and merged posts, use 301.

Is there a free WordPress plugin that logs 404s and creates redirects?

Yes. Impex Rank SEO, a free plugin on WordPress.org, includes a 404 monitor that logs each broken URL with hits, referrer and user agent, and a redirect manager that turns any logged URL into a 301, 302, 307 or 410 in one click.

WordPress tries to guess the new location for some old post slugs, but it is not reliable for every case. Impex Rank SEO creates a 301 redirect automatically when the slug of a published post changes, so old links keep working.

Install Impex Rank SEO free from WordPress.org, or go to Plugins → Add New in your admin and search for "Impex Rank SEO". The 404 monitor, redirect manager, sitemaps and schema are all free. See everything it covers on the features page.