sfw/fix
Internal 3xx link medium

Internal Links Pointing to Redirects

Internal links target a URL that 3xx-redirects instead of the final 200, adding a hop and wasting crawl budget.

What you see

Screaming Frog → Issues
Internal Redirection (3xx): 142
Address: https://example.com/blog/old-post
Status Code: 301 → https://example.com/blog/new-post

What’s actually happening

A crawler like Screaming Frog flags "Internal Redirection (3xx)": links across your own site point at URLs that 301/302 before reaching the real page. Each click costs an extra round trip, and Googlebot burns crawl budget chasing hops instead of indexing content. Left alone, these accumulate into redirect chains as URLs move again. Common offenders are http→https, trailing-slash normalization, and old slugs that were redirected but never updated in the linking pages.

Common causes

  • Links still use http:// and rely on the site-wide HTTPS redirect to fix the scheme
  • Trailing-slash or case mismatches (/about vs /about/) that the server normalizes with a 301
  • A page was moved and a redirect added, but the internal links to the old slug were never rewritten
  • Hardcoded absolute URLs in templates, nav, or footers pointing at superseded paths
  • Links to a non-canonical host (www vs apex) that redirects to the canonical one

How to fix it

  1. Export the redirecting links and their targetsIn Screaming Frog open the Internal Redirection (3xx) filter, then use Bulk Export > Response Codes > Redirection (3xx) Inlinks to get every source page and its final destination.
  2. Rewrite each link to the resolved 200 URLUpdate the href to the destination that returns 200 directly — correct scheme, host, and trailing-slash form — so the hop disappears. Edit the source content/templates, not the redirect rules.
  3. Fix the high-traffic templates firstNav, footer, and sidebar links repeat on every page, so one bad href there generates thousands of redirected requests. Clear those before one-off in-body links.
  4. Recrawl and confirm zero internal 3xxRun the crawl again; the Internal Redirection count should fall to 0. Keep the server redirects in place for external inbound links and old bookmarks.

Stop it recurring

Use root-relative canonical paths (/blog/new-post) in templates and recrawl before each release to catch new internal 3xx.

Related errors