WordPress 404 error: what causes it and which URLs really need a redirect

A WordPress 404 error means a URL no longer has any content. Most often it is a changed page link, a deleted post or product, a change to the permalink structure or a site migration. When the 404 affects all subpages at once, saving the permalink settings again is usually enough. Single URLs with traffic get a 301 to the closest equivalent.

Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 6 min read

One page or all of them? First identify the kind of problem

These are two completely different problems, and it is worth separating them before you change anything.

If the whole site except the home page shows a 404, the problem is not the content. WordPress has the posts and pages in the database, but the server does not know how to translate a pretty URL into the right content. This happens after moving to another server, after an update or after a plugin that tinkers with URLs. Kinsta's guide explains well how permalinks work, and simply saving those settings again rebuilds the URL rules.

If the 404 affects single URLs, that is the normal life of a site: something changed its URL or disappeared. Then you decide URL by URL.

When WordPress redirects by itself, and when it does not

This is where most surprises come from. WordPress has a built-in mechanism for old URLs, but it works only in some cases.

What changedDoes WordPress redirect by itself?What to do
The slug of a published postusually yescheck the old URL in the browser
The slug of a WooCommerce productusually yescheck the old URL in the browser
The URL of a page (About, Contact, Services)noset a 301 by hand
The structure of all permalinks in the settingsnoset redirects for URLs with traffic or go back to the old structure
A deleted post or productnoa 301 to an equivalent or a 410
A migration from another platform or domainnoprepare a list of old and new URLs before moving

The WordPress developers left pages out of this mechanism on purpose: the old URL mechanism covers content without a hierarchy, and pages have one. This is described in a ticket in the WordPress issue tracker and in the documentation of the wp_old_slug_redirect function.

Emergency steps: all subpages show a 404

  1. Save the permalinks again. Settings, Permalinks, Save Changes. Do not change anything in the form.
  2. Open two URLs in a private window: one post and one page. If they work, the problem is solved.
  3. Think back to the last change. A new plugin for redirects, multiple languages or security? Turn it off for a moment and check again.
  4. If it still does not work, report it to whoever looks after the site or to your host. It is most often the .htaccess file or server settings, and you cannot fix that from the WordPress admin.

Single URLs: what to redirect and what to leave

Not every 404 error is a problem. Google explains that a 404 for content that does not exist is a correct response, and that redirects belong where content has a new URL. You will find the rules in its guide to redirects.

The order of work is simple. You collect the list of URLs with errors, sort them by the number of visits and start with the ones people actually visit. An old post linked from a forum you redirect to the newer version of the topic. A discontinued product you send to its successor or to the category. An old sale page from three years ago can safely stay a 404.

Redirecting everything to the home page is tempting, because it clears the report. The report is clean, but the problem remains: a reader who clicked a guide on pruning roses lands on the home page and leaves.

Plugins are used to set redirects in the admin. A popular free one is Redirection, and Rank Math also has a redirects module. We describe it step by step, with a comparison of methods, in the guide on the 301 redirect in WordPress.

How the chat finds 404 errors and suggests a target for each URL

The TellMyShop plugin for WordPress and WooCommerce logs visits to non-existent URLs by itself. You ask your chat (Claude or ChatGPT) for a report and a plan, and it matches each URL with a suggestion: a newer post, a category, the product's successor or a 410. You get the report and plan in TellMyShop Free.

You: Show me the 404 errors from the last month and suggest what to do with them.

Your chat: I found 9 URLs with no content. The three with the most traffic:

You: Do all three.

Your chat: Preview: 2 redirects with 301 and one 410. The targets work, there are no loops or chains, and there is no content at the old URLs today. I'll save it after your ‘yes’ and check each old URL after saving.

Card status: waiting for your “yes”
change preview

/garden-services/, 41 visits. That is an old page, today the content is at /garden-design/.

old version: 404 not found

new version: 301 to Garden design

/spring-sale-2023/, 12 visits, the sale has ended, no equivalent.

old version: 404 not found

new version: 410 gone for good

/pruning-roses-in-autumn/, 7 visits. The post was deleted, the post Pruning roses step by step covers a similar topic.

old version: 404 not found

new version: 301 to Pruning roses step by step

Illustration: products, numbers and replies are examples.

In TellMyShop Pro the chat saves redirects after your approval, up to 50 in one batch. Before saving it checks that the target works, that no redirect loop or chain is created, and that there is no live content at the old URL today that the redirect would hide. You can undo each redirect from the change history. You will find details and the sign-up on the TellMyShop for WordPress and WooCommerce page, and prices on the pricing page.

How not to create new 404 errors

Do not change the permalink structure on a live site unless you have a redirect plan. When you change the URL of a page (not a post), set a redirect from the old one straight away. When you delete a post, consider whether refreshing it would be better. Before moving the site, list the old URLs with traffic and their new equivalents.

If a page works but is not in Google, that is a different problem from a 404. We describe it in the guide WordPress page not showing in Google. You will find more guides on the blog.

Questions and answers

Does WordPress redirect the old URL by itself after I change a permalink?

Partly. When you change the slug of a published post or WooCommerce product, WordPress remembers the old one and usually redirects visitors by itself. It does not do this for pages, meaning subpages such as About or Contact. Nor does it do anything when you change the structure of all permalinks in the settings.

All subpages suddenly show a 404. What do I do first?

Go to Settings, Permalinks and click Save Changes without changing anything. WordPress then rebuilds its URL rules. This is the most common and quickest fix after an update, a migration or installing a plugin. If it does not help, check the .htaccess file and server settings with whoever looks after the site.

Can I redirect all 404 errors to the home page?

Better not. Google often treats such a redirect as a soft 404, because the home page does not answer what the reader was looking for. Redirect to the closest equivalent: a newer post on the same topic, a category or the product's successor. When there is no equivalent, leave the 404 or set a 410.

Where do I get a list of URLs returning 404?

From Google Search Console, in the Pages report, and from a plugin that logs visits to non-existent URLs. Search Console shows URLs known to Google, and the plugin shows the ones people actually land on, including from links in emails and social media.

What is the difference between 301 and 410?

301 says the content has moved permanently to a new URL, and carries its Google ranking there. 410 says the content has been removed for good and will not come back. Use 410 for old sales, events and products with no equivalent at all.

WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.

TellMyShop for WordPress and WooCommerce

Your chat reads the site, shows every change before saving it and saves only after your yes. You can undo most changes with one sentence. Works with Claude or ChatGPT, free accounts included.

Read next