Traffic dropped after a website redesign: what to check on a WordPress site, in order
A redesign cuts search traffic in four ways. The new site is closed to search engines, old addresses answer 404, old addresses redirect to the wrong page, or the pages that brought visitors are gone. Three can be read off the site in minutes. The fourth takes Search Console.
- By
- WP Ministry
- Published
- Tested on
- WordPress 7.1.3, PHP 8.3.35
In short
- Check first that the new site is not still asking search engines to stay away. One command reads the tag every page prints.
- Then ask every old address what it answers. A file of addresses and a three-line loop print each one's status and where it leads.
- WordPress forwards an old address by itself in a few cases only. A post whose slug changed is forwarded. A page whose slug changed answers 404.
- WordPress also guesses. A removed /pricing/ can be sent to a post whose slug happens to begin with "pricing".
- Google says many old addresses sent to one unrelated page, such as the home page, might be treated as soft 404s.
- Google's general rule for changed addresses is a few weeks on a medium-sized site. It promises nothing about where pages land.
When search traffic falls after a relaunch, the rebuild itself can be the cause in four ways. The new site is still closed to search engines. Old addresses now answer 404. Old addresses redirect to the wrong place, such as the home page. Or the pages that brought visitors were removed or emptied. The first three can be read off the site in minutes with the commands below. The fourth takes Search Console.
This page is for a WordPress site that was redesigned or rebuilt on the same domain and is already live. The list for before and during a rebuild is the website redesign SEO checklist. A move to another host or platform is in how to migrate a website without losing SEO, and a change of the domain is in how to change your WordPress URL.
The four causes, and what each one does
| Cause | What Google does with it | The check |
|---|---|---|
| The site is closed to search engines | Drops each page from its results as it crawls the page again | Read the robots tag on the home page |
| Old addresses answer 404 | Removes an indexed address that answers 404 from its index | Ask each old address for its status |
| Old addresses redirect to the wrong page | May treat many addresses sent to one unrelated page as soft 404s, and leave them out | Read where each redirect leads |
| Pages that brought visitors are gone or emptied | Has nothing at that address to show | Compare pages before and after in Search Console |
1. Is the new site closed to search engines?
WordPress's own way to close a site under construction is the box "Discourage search engines from indexing this site", under Settings, then Reading. While it is ticked, WordPress prints a robots tag of noindex, nofollow on every page. A staging copy that becomes the live site brings the ticked box with it. Google's guide to moving a site puts a forgotten noindex or robots.txt block first in its list of common mistakes.
This prints the robots tag of the home page. Put your own address in place of https://example.com/.
curl -s https://example.com/ | grep -i -o "<meta[^>]*robots[^>]*>"<meta name='robots' content='noindex, nofollow' />That answer means the site is closed. A tag that reads max-image-preview:large and nothing else blocks nothing.
Google's page on traffic drops says a misplaced noindex takes effect as Google crawls each page again, so the fall is slower than when a whole site is down. A slide that begins at launch and keeps going fits it.
What the box does and how to turn it off has the steps and the other places a noindex can come from. The page indexing check reads the tag, the headers and robots.txt for one address without a terminal.
2. Make a list of the old addresses
The next two checks need the addresses the old site answered at. These places still hold them.
- Search Console's Performance report. Set the date filter to a period before the launch, choose the Pages tab above the table, and use the export button. These addresses were shown in Google, so they matter most. The report reaches back 16 months.
- A sitemap of the old site, if someone saved a copy.
- A backup of the old site. Its database lists every post and page.
- The Internet Archive. Its help page gives the address that lists every file it has archived for a site:
web.archive.org/*/example.com/*, with your own domain. It cannot guarantee that a site was archived. - Search Console's Page indexing report. The row "Not found (404)" lists addresses Google asked for and got a 404. Google's help says each list there holds examples, up to 1,000.
Save the addresses in a file named old-urls.txt, one full address to a line.
3. Ask every old address what it answers
This asks for each address in the file and prints its status code, the address, and where a redirect points. curl does not follow the redirect, so you see the first answer by itself.
while read -r url; do
curl -s -o /dev/null -w "%{http_code} $url %{redirect_url}\n" "$url"
done < old-urls.txt200 https://example.com/about/
301 https://example.com/summer-sale/ https://example.com/june-offer/
301 https://example.com/services/web-design/ https://example.com/
404 https://example.com/our-team/ | A line that starts | Means | Go to |
|---|---|---|
200 | A page is served. Whether it is still the same page is another question | Section 6 |
301, and ends at the page that replaced the old one | The address is forwarded as it should be | |
301, and ends at the home page or a page about something else | The address is forwarded to the wrong place | Sections 4 and 5 |
302 or 307 | A temporary redirect. Google's page on redirects says it keeps showing the source page in results | Change it to a 301 |
404 | Nothing forwards the address | Sections 4 and 6 |
000 | curl got no answer at all. The address is mistyped, or no server answers at it | Correct the file |
Set the lines beside your export from the Performance report. A 404 on an address that had clicks is the first thing to fix.
A 301 can also point at an address that does not exist: Google's guide says it frequently sees this. The redirect checker follows one address through every hop to its end.
4. What WordPress forwards by itself, and what it does not
WordPress redirects some old addresses without being asked, so a rebuild can look fine on the few addresses someone tried. This is what an old address answered on a WordPress site after each kind of change. The site was on "Post name" permalinks unless the row says otherwise.
| What changed | The old address answers | Why |
|---|---|---|
| A post's slug, edited on the same install | 301 to the new address | WordPress saved the old slug with the post |
| A page's slug | 404 | WordPress keeps no old slug for a page |
| A page moved under a parent page, or out from under one, slug unchanged | 301 to the new address | The guess described below |
| The permalink structure, from "Day and name" to "Post name" | 404 | Nothing reads a name out of the dated address |
| A post moved to another category, under a structure of category and post name | 301 to the new address | WordPress corrects the category in a post's address |
| "Category base" changed | 404 for the category archive | Nothing forwards a base |
| A post typed in again on a fresh install, under a new slug | 404 | The saved slug belonged to the old database |
| A page removed, and another page or post has a slug that begins the same way | 301 to that other page | The guess |
| A page removed, and no slug begins the same way | 404 |
A saved slug. When the slug of a published post changes, WordPress stores the old one with the post and redirects the old address with a 301. Its code reference says this is not attempted for kinds of content that have parents and children, and pages are one. The record lives in the database. A site rebuilt on a fresh install, with the content entered again, starts without it.
A guess. When an address finds nothing, WordPress looks for a published post or page whose slug begins with the name in the address, and redirects to the first it finds. That is what forwards a page after it moves under a new parent. It is also what sends a removed page's address somewhere it was never meant to go. On a site with a post at /pricing-changes-for-2025/, removing the page at /pricing/ leaves this:
curl -sI https://example.com/pricing/ | grep -i -E "^(HTTP|location|x-redirect-by)"HTTP/1.1 301 Moved Permanently
X-Redirect-By: WordPress
Location: https://example.com/pricing-changes-for-2025/The line X-Redirect-By: WordPress says WordPress sent the redirect. One made by a rule in the server's configuration carries no such line, so the command also shows where to look for a redirect you did not expect.
For every old address that answers 404 and has a replacement, add a 301 redirect to that replacement. How to set up redirects in WordPress has the three places a redirect can live, and the redirect map builder turns a list of old and new addresses into rules. If the whole permalink structure changed, one rule covers every post: see how to change WordPress permalinks without breaking your old links.
5. Old addresses that all lead to the home page
A rebuild that drops a section can leave one rule behind that sends everything in it to the home page. On Apache it looks like this.
RedirectMatch 301 "^/services/.+" "/"Each old address then answers 301, so a quick look finds nothing wrong. In the loop's output, every line ends at the same address.
Google's guide to moving a site says not to redirect many old addresses to one irrelevant destination such as the home page. In its words, this "might be treated as a soft 404 error". Its page on crawl errors says pages it judges to be soft 404s are excluded from Search. The exception in the same guide is real consolidation: when several old pages were merged into one, they can all redirect to it.
The cure is one redirect for each old address, to the page that replaced it. Take the catch-all line out and put lines like this one at the top of .htaccess, above # BEGIN WordPress.
Redirect 301 "/services/web-design/" "/website-design/"An old address with no replacement gets no redirect. It answers 404, which the next section covers.
6. Pages that were removed or emptied
Removed. A page that is gone answers 404, unless WordPress guesses as in section 4. Google's documentation gives two answers, by case. If the page has moved or has a clear replacement, return a 301 to it. If it was removed and nothing on the site replaces it, a 404 or a 410 is the right answer, and Search Console's help says such a 404 is not necessarily a problem. So look each 404 up in your export. One that brought clicks is a page worth having back.
Where the redesign was done on the same install, a deleted post or page may still be in the Trash. WordPress keeps it there for 30 days unless the site's configuration says otherwise. This lists what is in it.
wp post list --post_type=post,page --post_status=trash --fields=ID,post_type,post_title --orderby=ID --order=ascIn the dashboard, the "Trash" link above the list of pages shows the same, with "Restore" under each title. A restored page comes back as a draft, so publish it again.
Emptied. A page that kept its address and lost its text answers 200, so the loop passes it. Search Console shows it instead, as a page that lost clicks while its address still works. Compare its title, headings and text with a copy from before: a backup, or the Internet Archive. What has to arrive on each new page lists what a search engine reads from a page.
7. Read Search Console the way Google's guide says
Google's page on traffic drops gives the method for the two questions the site cannot answer: which pages lost clicks, and since which day.
Step 1: Set the date range to 16 months
In the Performance report, choose the date filter and select "Last 16 months". Google's reason is to see the fall in context and rule out one that happens every year.
Step 2: Compare the time since launch with the time before
Open the date filter again and choose "Compare". Pick two periods of the same length on either side of launch day. Search Console's help says the table then gains a "Difference" column, and suggests the weekly or monthly view so that weekdays do not skew the comparison.
Step 3: Sort the pages by what they lost
Choose the Pages tab and select "Clicks Difference". The pages that lost the most are at one end.
Step 4: Find the day
Set the chart to daily. A fall that starts on launch day points at the rebuild. One that starts on another day points at the next section.
Step 5: See how wide it is
Google's guide: if the fall is site-wide, check the Page indexing report. If it affects a group of pages, inspect a few of them with the URL Inspection tool.
The pattern narrows the cause. Every page falling together from launch day fits a closed site. A group of pages that shared a pattern in their addresses fits redirects. One or two pages that carried most of the clicks fit a page that was removed or emptied.
In the Page indexing report, look for a rise since launch in "Not found (404)", "Soft 404", "URL marked ‘noindex’" or "Redirect error". Old addresses under "Page with redirect" are the expected result of a redirect that works: Google's help says such an address is not indexed, and its target may be.
8. What else it could be
A fall that follows a launch is not always caused by it. Besides technical issues and site moves, which are this page's subject, Google's page lists these causes.
- An algorithmic update. Google publishes a list of its ranking updates. Compare the dates with the day your fall began.
- A security issue. Check the Security Issues report in Search Console. If it lists anything, see how to check whether a WordPress site was hacked.
- A spam issue. Check the Manual Actions report.
- Seasonality and changing interests. The 16-month view shows a fall that comes every year, and Google Trends shows whether fewer people are searching at all.
- A change in the data. Google keeps a page of data anomalies in Search Console.
9. How long recovery takes, in Google's words
Google gives general rules and no dates.
- Changed addresses. Its page on traffic drops says that, as a general rule, a medium-sized website can take a few weeks for Google to notice the change, and larger sites longer. Its guide to moving a site says visibility may fluctuate temporarily during that time.
- Other changes. The same page says some changes take effect in a few days and others could take several months, and that you will likely want to wait a few weeks before analyzing the site again.
- No promise. It also says there is no guarantee that a change to a website will have a noticeable effect in search results.
Nobody outside Google can turn these into a date for your site.
What to fix first
- Open the site, if the first check found
noindex. It affects every page. - Redirect the old addresses that had clicks and answer 404, from the top of the Performance export down.
- Replace a rule that sends everything to the home page with one redirect for each address.
- Bring back the pages that brought visitors, or their text.
- Run the loop again. Every old address with a replacement should answer 301 and lead to it.
- Leave the redirects in place. Google's guidance is as long as possible, generally at least 1 year.
When to get help
Hand it over when the list is longer than you can check by hand, when nobody kept a record of the old site, or when every check passes and the fall goes on. WP Ministry's SEO audit is a one-time, written audit of what stands between a WordPress site and a search engine. Each finding names the documentation it rests on, the fixes on the WordPress side are done, and each fix is tested again.
Common questions
How long does it take for traffic to come back after a redesign?
Google gives no date. Its general rule for changed addresses is a few weeks for a medium-sized site and longer for a large one, and it says there is no guarantee that a change will have a noticeable effect. Fix what the checks find, then wait a few weeks before reading the report again.
No address changed. Why did traffic fall?
Then it is not redirects. Check that the site is open to search engines and that the pages kept their titles and text. If both hold, compare the day the fall began with launch day and go through section 8.
Should I redirect every 404 to the home page?
No. Google says many old addresses redirected to one unrelated page might be treated as soft 404s, which it leaves out of Search. Redirect an old address to the page that replaced it. Let an address with no replacement answer 404.
Will Google stop asking for the old addresses?
Not soon. Search Console's help says Googlebot will probably keep trying an address that answers 404 for some time, less and less often, and that there is no way to make it forget one. So a redirect added late can still be met.
- Error fix"Alternate page with proper canonical tag" in Search Console: what it means on a WordPress site
- Error fix"Blocked by robots.txt" in Search Console: when it is fine, and how to find the rule on WordPress
- Error fix"Blocked due to other 4xx issue" in Search Console: what it means on WordPress and what to do
- Error fix"Crawled - currently not indexed" on a WordPress site: what to leave and what to check
- Cost guideHow much does SEO cost? What sellers' surveys report, and what moves the price on a WordPress site
- ResourceLocal SEO checklist for a WordPress site: the profile, the website, and what to leave out

