Retiring a Page That Still Has Inbound Links
Retiring a URL that nothing links to is a deletion. Retiring one that other sites point at is a routing decision, and the four available answers — redirect, merge, keep, or kill — have different mechanical consequences. The wrong one either discards signals you already earned or creates a page that reads as an error to the crawler.
The decision turns on one question: does a page exist that genuinely answers the request the old URL answered?
Work out what points at it first
Before choosing, get the inputs. Three sources, in order of usefulness:
Referring URLs from a link index. Any backlink tool’s export of referring pages for the specific URL, not the domain. What you want is the count of distinct referring domains and, more importantly, whether any of them are pages you would care about losing.
Request logs, filtered by referrer. This is the better signal because it shows links that are actually being followed by humans. A link that exists but sends no traffic is worth less than one that sends some.
Internal links pointing at the URL. Entirely under your control, and they need fixing regardless of which option you pick. Fixing internal links to point at the new destination directly, rather than through the redirect, is the routine part — the reasoning is in internal linking as plumbing.
# distinct external referrers hitting one path, from an access log
awk '$7 == "/old-page/" {print $11}' access.log \
| grep -v 'example\.com' | sort | uniq -c | sort -rn | head
Option one: redirect to an equivalent
Use it when a surviving page answers the same request. Not the same topic — the same request. A reader who clicked the old link should feel they arrived somewhere useful rather than somewhere adjacent.
301 is the code. The equivalence test is the whole thing: a redirect whose destination does not answer the request is generally reclassified as a soft 404, which means you have preserved nothing and added a hop. “Close enough” is the failure mode, and it is common because at the moment of decision every destination feels close enough.
Point the rule at the final destination, not at another rule, or you have started a chain — and chains accumulate faster than anyone plans for.
Option two: merge, then redirect
Use it when no single surviving page answers the request, but you could make one that does.
This is the option people skip, and it is frequently the best one. Take the parts of the retiring page that earned the links — the data table, the worked example, the definition, whatever it was — and fold them into the destination page before you redirect. Then the destination genuinely answers the request, and the equivalence test passes rather than being fudged.
Order of operations matters:
- Move the substantive content into the destination and publish it.
- Verify the destination is indexed and serving the merged content.
- Then add the 301.
Doing the redirect first means that for however long the merge takes, inbound links land on a page that does not contain what they were pointing at.
Option three: leave it up
Use it when the page still answers its request and the reason for retirement is internal — it is off-strategy, it is not converting, nobody owns it, the design is old.
None of those are reasons the page has stopped being useful to the people arriving at it from other sites. A page with inbound links and no maintenance cost is not costing you anything by existing. “We’re consolidating our content” is a real reason to merge; it is not by itself a reason to make earned links stop working.
If the objection is that the page is outdated, updating it is cheaper than any of the other three options and preserves the URL exactly.
Option four: kill it honestly
Use it when the request no longer exists and cannot be answered. The product line is discontinued and there is no successor. The event was in 2019. The integration was shut down.
Serve 404 or 410 and accept the loss. The choice between the two codes is a scheduling detail covered in 404 versus 410; the substantive decision is the one you have already made.
Make the error page useful. A reader who arrives from an external link at a URL for a discontinued product should be able to see, on that page, what the product was and what exists now. That is not a redirect and it does not preserve any signal, but it is the difference between a dead end and a handoff.
What not to do
Do not redirect to the homepage. The most common answer and the one that preserves least. It fails the equivalence test by construction — the homepage answers “what is this site” and the request was something else.
Do not redirect to a category page as a default. Sometimes correct, often the same mistake one level down. A category page answers “what is in this category,” which is a genuine equivalent only if the old page was itself a listing.
Do not noindex a page you want gone. A noindexed page still returns 200 and still exists as a destination. It removes the page from results while keeping the URL alive, which is the right tool for a different problem — the distinction is in canonical, redirect, or noindex.
Do not block the retired URL in robots.txt. Blocking the fetch prevents the crawler from seeing your redirect or your error code, so the URL sits in an undefined state. This trap has its own post: robots.txt cannot deindex a page.
Do not delete the redirect rule later. Redirect rules are load-bearing indefinitely, because the external link is not going to be updated. A rule costs nothing to keep.
A worked decision
A documentation site is retiring /docs/v1/webhooks/, which has links from a handful of third-party integration guides.
- Is there an equivalent?
/docs/v2/webhooks/exists but the v1 payload format is different, so a reader arriving from an integration guide would find instructions that do not match their code. - Can one be made? Yes — add a “migrating from v1” section to the v2 page covering the payload differences.
- Decision: merge, then 301. The v2 page now answers both the v1 and v2 requests.
Change one fact — the v1 API is off and cannot be used at all — and the answer changes. There is no equivalent request to answer, so it becomes a 410 with a body explaining what replaced it. The links are lost, and that is the correct outcome rather than a failure.
The rule that holds up
Decide the destination by asking what the reader was promised, not what the content team would prefer. The crawler’s equivalence judgement approximates the reader’s, so the two tests give the same answer more often than not — and when they disagree, the reader’s is the one you can verify.