Estimated reading time : 5 min · Published
Distinguish error sources
Record the requested URL, referring page, frequency and date. A typo in an internal link should be fixed at source; an old external link may warrant a redirect; a guessed address does not automatically need a new page.
Check slash variants, old campaigns and downloads. Server logs and monitoring tools reveal different cases. Prioritise addresses linked from the site or actually requested.
Fictional exercise: /guide-demo/?lang=fr#documents should open an HTML section. The navigation request target contains /guide-demo/?lang=fr; the browser handles #documents separately. A 200 status can therefore be correct even if id="documents" has disappeared from the rendered HTML. A status-only check misses that broken destination.
Test the HTTP response, returned content and promised location separately. For a conventional HTML anchor, check the ID in the rendered page and arrival by keyboard, including after translation. Correct the source link or restore a stable ID where appropriate. A server rule cannot choose a redirect from a fragment absent from the request target; distinguish this from application routing handled by JavaScript.
- URL and source recorded.
- Internal link fixed at source.
- Priority follows real use.
Scroll the table horizontally to read every column. With a keyboard, focus the table area and use the arrow keys.
| Fictional observation | What the result establishes | Check or correction |
|---|---|---|
| Page URL returns 404 | The server reports a missing resource | Correct the source or select a genuinely equivalent replacement |
| Page returns 200, id="documents" absent | The page responds but the promised section is missing | Check rendered HTML and correct the link or its ID |
| Page returns 200 in another language | HTTP success does not validate the intended language | Check destination and wording in each edition |
| 301 then 200 to an unrelated page | The redirect completes without proving equivalence | Compare final content with the link’s intention |
Choose status and destination
If content has a clear equivalent, redirect directly to it. If it disappeared without replacement, keep a genuine 404 or 410 as appropriate and offer useful navigation. Sending every error to the homepage loses context.
Avoid redirect chains and loops. During a migration, use a map of old and new addresses. The migration guide explains this choice.
- Real equivalent before redirect.
- Missing status retained where needed.
- No chains or loops.
Help on the error page
The 404 page should plainly say the address has no matching content, then offer reliable routes: main navigation, search, categories or contact as appropriate. Do not promise the page will return unless that decision has been made.
Test the error page on phone and by keyboard. It must retain the correct HTTP status, a clear heading and working links. An attractive illustration cannot replace a concrete way forward.
- Clear, non-blaming message.
- Exit links work.
- HTTP status correct.
Watch after changes
After publishing, renaming or removing content, check internal links, sitemap and several important old addresses. Repeat a few days later: links from emails, bookmarks and partners may then emerge.
Record the fix and its outcome. A still-visited URL may indicate an external link to update or a content need. The content operations guide helps plan removals.
- Post-release check.
- Old URLs tested.
- Fixes documented.
Choose a relevant repair

Proposed case: an old link points to the homepage after an offer disappears. The visitor reaches a valid page but loses the expected answer.
Find an equivalent destination or clearly explain withdrawal. Check incoming links, server state and final journey; successful redirection does not establish content equivalence.
- Identify the link's intent
- Justify the chosen destination
- Test arrival and content
- Compare preview and page
Prepare sharing previews for web pages
Reference documents
- MDN : HTTP 404 Not Found
- W3C WAI : Menus Tutorial · Source consulted
- IETF : RFC 3986, Fragment · Source consulted
Content updated on
