Page with redirect in Search Console: normal, until it is not
You see “Page with redirect” in Search Console. That is fine for retired URLs after a migration or a slug change. It needs work when Google still finds the old path through your sitemap or your links, or the redirects are messy.
By Théophile Louvart, founder of Porteur · Updated 14 September 2026 · Markdown
Why “Page with redirect” is normal
Search Console’s Page indexing report lists every URL Google knows for your property as Indexed or Not indexed, with a reason. “Page with redirect” means the URL redirects. Google indexes the target, not the source. That is expected after you move a page or rename a slug.
If you changed “/pricing-old” to “/pricing”, you want Google to drop the old URL. “Page with redirect” on “/pricing-old” is the correct end state. You do not need to force Google to index the source. You want it to pass signals to the target and disappear from results over time.
When it becomes a problem
Three cases need action. Each wastes crawl, slows users, or risks errors. Fix them and the status resolves on its own.
- Your sitemap still lists the old URL. Google keeps re-finding it and reporting “Page with redirect”.
- Your internal links still point to the old URL. Users and bots hit a hop on every click.
- You have a redirect chain or a loop. Google may show “Redirect error” or stop at an intermediate hop.
Fix the source of truth first. Remove old URLs from the sitemap. Update links in code and content. Collapse chains to a single hop. Close loops.
Find redirect cases in Search Console
Start in Page indexing. Filter to “Page with redirect”. You get up to 1,000 example URLs. These are sources that redirect, not the targets.
Check a sample URL with URL Inspection
Paste an example. See if it is on Google, how it was discovered, the last crawl, and any canonical. Use Test live URL to fetch now. Confirm the HTTP response is 301 or 308 from source to the final target. Note the referring page or sitemap shown.
Look for discovery paths
In URL Inspection, check Discovery. If it lists a sitemap, your sitemap still holds the old URL. If it lists a referring page, that page links to the old URL.
Spot chains or loops
In Test live URL, open View tested page. Check the HTTP response and any fetch failures. “Redirect error” in Page indexing points to loops or a too long chain.
Map the hop
Open the old URL in your browser with DevTools, Network tab. Or use curl. Watch the Location headers. You want old to new in one step, not old to mid to new.
Use Request indexing for a single fixed URL. It queues a crawl and has a small daily quota per property. It does not guarantee indexing, but it is enough here to re-check the hop and the new target.
Clean your sitemap of old URLs
Your sitemap is a list of canonical URLs you want indexed. Do not list sources that redirect. List only final targets. This keeps Google from re-crawling dead paths.
Find the sitemap used
In Search Console, open Sitemaps. Note the submitted files and the Last read time. If you output per section, check each.
Search for the old URL
Download the XML. Search for “/pricing-old”. If present, your generator has not updated since the rename.
Fix the generator
Update your CMS or build step so only live URLs are exported. For static sites, rebuild after the change. For custom apps, filter out 3xx and 4xx.
Resubmit and ping
Resubmit the sitemap in Search Console. Also serve it at /sitemap.xml and link it in robots.txt. Google will re-read it on its own as well.
A fixed sitemap for the “/pricing-old” case lists only “/pricing”. The old URL drops from the next report batch once Google re-crawls it or stops discovering it through the sitemap.
Update internal links that still hit redirects
Google follows redirects, but every hop costs crawl budget and speed. Users feel it too. Do not rely on redirects inside your site once the move is done.
Find linking pages
Use URL Inspection on the old URL. Note the referring page. For more, run a crawl with your own tool, or grep your repo for the old slug.
Fix templates first
Change nav, footer, and shared components. A single header link can send every user through a redirect on every pageview.
Fix CMS content
Search and replace in your CMS for “/pricing-old”. Update posts, docs, and landing pages. Save a list of edited URLs for re-crawl.
Check JavaScript and meta
Look for redirecting links in client code, JSON, hreflang, and Open Graph tags. Update to the final targets.
After you update links, the fixed “/guides/getting-started” page links straight to “/pricing”. No hop. Re-crawl with Test live URL on a few edited pages, then let Google find the rest.
Collapse redirect chains and stop loops
A chain is old to mid to new. A loop is old to mid to old. Both waste crawl and can trigger “Redirect error”. Your goal is one hop from every old source to the live target. Prefer zero hops on internal links.
List current rules
Export your server or edge redirect rules. Include app-level rewrites. Note normalisers like http to https and slash rules.
Trace common paths
Test with curl or your redirect checker. Try “/pricing-old”, http to https, www to non-www, and trailing slash variants. Write down each Location target.
Set the final target once
Update the source rule so it points straight to the live URL. If you must normalise, do it before or after, not both. Keep the total to one 301 or 308.
Remove obsolete hops
Delete mid rules that only exist to catch traffic no longer linked anywhere. Keep a backup, then remove and test again.
Examples to set a single hop. Adapt with care and test in staging first.
# Apache, httpd.conf or .htaccess
RewriteEngine On
# Normalise http to https first
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://yourproduct.com%{REQUEST_URI} [R=301,L]
# Single hop from old slug to new
RewriteRule ^pricing-old/?$ https://yourproduct.com/pricing [R=301,L]
# Nginx, server block
# Normalise www to non-www
server {
listen 80;
server_name www.yourproduct.com;
return 301 https://yourproduct.com$request_uri;
}
# Single hop from old to new
location = /pricing-old {
return 308 https://yourproduct.com/pricing;
}
Re-test with curl -I https://yourproduct.com/pricing-old. You should see one Location header, straight to “/pricing”. If you see two or more, adjust the order or merge rules.
301, 302 or 308 for Google
For permanent moves, use 301 or 308. Google treats both as permanent and passes signals. 308 keeps the request method. 301 is the most common and fine for most pages.
Use 302 for a temporary move only. Google may keep the source indexed if it thinks the change will revert. Do not leave long term slugs on 302 if you want the target to rank.
Whatever you choose, be consistent. A mix of 301 and 302 across the same path confuses both bots and caches. Pick one per intent and stick with it.
After fixes: re-check and monitor
Go back to Page indexing. Open the “Page with redirect” report. Click Validate fix. This starts a re-check that can take about two weeks. It confirms your sitemap and links are now clean, and the problematic sources now resolve as expected.
- Use URL Inspection to Test live URL on the old source and on a few edited pages. Confirm a single hop and a 200 on the target.
- Request indexing on any key page you changed, such as “/guides/getting-started”.
- Watch for “Redirect error”. If it appears, look for a loop or an empty Location.
- Check Crawl stats for spikes in 3xx after a deploy. It hints at new chains.
Expect the count in “Page with redirect” to fall as Google stops discovering old sources through your sitemap and links. It will never be zero on a site that keeps shipping. That is fine. Focus on the three fix cases, not the number itself.
Worked example: a slug rename without noise
You renamed “/guides/getting-started” to “/guides/start”. You added a redirect from old to new. Search Console shows “Page with redirect” on the old slug. Here is how to keep it tidy.
Fix sitemap
Ensure your sitemap lists only “/guides/start”. Remove the old slug from the generator. Resubmit the sitemap.
Fix links
Search the codebase and CMS. Update any link that points to “/guides/getting-started”. Pay attention to nav and onboarding emails.
Collapse hops
If http to https or slash rules add steps, adjust order so “/guides/getting-started” goes to “/guides/start” in one hop after normalisation.
Validate
Use URL Inspection on the old slug. Test live. You should see a 301 or 308 to “/guides/start” and a 200 on the target. Request indexing once.
A week later, the Page indexing report still lists some “Page with redirect” entries. They were found through old blog posts you missed. You fix those links. The next crawl drops the count further. Nothing else to do.
Questions
It means the URL you submitted or Google discovered returns a redirect. Google indexes the target, not the source. This is normal for old URLs after a migration or a slug change. It needs work only when your sitemap or internal links still use the old URL, or when there is a chain or a loop.
No. You only need to fix the three cases that cause waste or errors. Remove old URLs from the sitemap, update internal links to point to the final URL, and collapse chains or loops. The rest are harmless leftovers from past changes.
Open an example in URL Inspection. Check Discovery for the referring page or sitemap. Test live to see the HTTP response and the Location target. This tells you if the source is in your sitemap, linked from a page, or part of a broken chain.
Use 301 or 308 for a permanent move. Google treats both as permanent and passes signals. Use 302 only when the move is temporary. Be consistent per path.
Search Console updates in batches. If you Validate fix, the re-check can take about two weeks. Counts also fall as Google re-crawls sitemaps and pages. You can request indexing on key URLs, but indexing is not guaranteed.
That points to a loop, a chain that is too long, or an empty or invalid Location. Trace the hops with curl, shorten to one step, and correct any malformed targets. Then validate the fix in Search Console.
Sources
Check my site, free
Want a second set of eyes on redirects and links, fast? Paste your URL and get a free check in about thirty seconds with three findings you can act on.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideHow to use Google Search Console in ten minutes a week
- GuideThe Sitemaps report: what Success, Has errors and Couldn’t fetch mean
- GuideHow to use the URL Inspection tool in Search Console
- GuideInternal linking for a small site: which pages link to which
- Glossary301 redirect
- Free toolRedirect checker
- GuideGoogle is not indexing your site: find the reason in Search Console
- GuideSearch Console shows no data: what to check, and how long to wait