Library·SOP·SEO
Trace unwanted redirects, repair owned rules and source links, and confirm visitors reach the right page without a chain or loop.
Last reviewed: · Editorial review
Clarity, structure and references reviewed in this version. This is not a test in a live account.
Trace unwanted redirects, repair owned rules and source links, and confirm visitors reach the right page without a chain or loop.
This SOP covers:
This does not cover:
A redirect sends a request for one address to another. A chain passes through extra addresses before the final page. A loop returns to an earlier address and may never show a page.
Make a private copy of the Redirect repair log. Use Repair log for this site’s findings and Worked examples to understand the choices.
Read Start here and Worked examples. Follow the fictional chain and loop rows from the reported route to the corrected old URLs and source links.
In Scope, enter Website / scope and Content owner. The owner confirms the page that should answer a request for each old URL.
Open Semrush, choose Site Audit, and open the campaign for the selected site. Check the completed crawl before using its redirect findings.
From Overview, fill Scope → Before crawl date and Before pages crawled.
In campaign settings, compare the crawl scope, page limit, excluded paths, and excluded checks with your requested section. Record them in Crawl limit / exclusions.
Use Crawled Pages to check the selected sections. Name missed or blocked sections in Coverage gaps. If the crawl stopped at its page limit, arrange a larger crawl or separate section crawls with the audit owner and combine their findings in this log.
In Issues, open Redirect chains and loops. Review all pages of its affected-URL list.
Open each affected URL’s route details and read the addresses in order. A → B → C is a chain if A and B redirect; A → B → A is a loop because an address repeats.
In Repair log, put the first URL in Reported start URL and the full ordered list in Reported route. Start Status at To check.
Find the pages linking to the reported old URL. In Crawled Pages, open that URL’s page details and inspect Incoming Internal Links. Add one row per source page and list its link words or button and location in Source page / link location. If it has no internal source, enter “No internal source found” there and keep the URL-rule check.
Continue through every finding and source page, adding log rows as needed. If no chain or loop was reported, write “No findings in this completed crawl” in Scope → Remaining work / next review, with any coverage gaps.
The last address in a chain is not automatically the right page. Read what the source link promises; for an old URL without a source link, ask its content owner what that page was for.
Check each unique Reported start URL in Chrome’s Network panel. This shows the page requests that a quick glance at the address bar can hide.
Open More (⋮) → More tools → Developer tools → Network. Enable Preserve log and Disable cache, clear earlier requests, and select the Doc filter.
Open the exact start URL. Select each page request and open Headers. Read Request URL, Status Code, and, for a redirect, the Location response header—the next address. Continue until a page loads or an address repeats.
In Observed route before, enter the ordered addresses and statuses, such as “301 old → 301 middle → 200 final.” For a loop, name the repeated address and browser error. Check that a final 200 page contains useful content.
If the crawler route differs, the source cannot be located, or the cause remains unknown, set Status to Needs investigation. In Reason / owner / due date, retain the difference, name the redirect or hosting owner, and set a date.
For a confirmed route, choose the page that answers the old request and works directly.
Read the source sentence or button and compare it with the proposed final page. If there is no source or a loop has no final page, ask the content owner what the old URL was meant to provide. A size guide should lead to a current size guide, not merely a working homepage.
Open the proposed final address with the Network panel still recording. If it redirects again, use the resulting direct address only after checking that page’s content. Put the checked address in Final URL and the content match in Why this page?.
If no relevant final page can be confirmed, set Status to Waiting for owner. In Reason / owner / due date, name who must restore content or decide how the old URL should be retired and when. Continue other rows.
For each address that redirects on your WordPress site, open Tools → Redirection → Redirects and search its path—the part after the domain beginning with /.
For matching rules, open Edit and record the source path, current target, rule title, and relevant query/slash matching options in Owned rules / old targets. Inspect every old address in the route, not just the first.
If no exact matching rule exists or an address belongs to another site, name the controlling site/plugin/hosting owner in Reason / owner / due date. Choose Investigate / owner handoff in Chosen fix and Waiting for owner in Status. Do not add a competing rule to guess which system controls it.
Choose the source-link and rule changes needed for each route. For confirmed owned permanent moves, use the direct final address from your log.
For an owned A → B → C chain, change A to C and keep B → C when B is still a valid old address. In Chosen fix, select Edit owned rule and source link. Editing the source link to C improves future clicks; it does not repair A for old bookmarks.
For an owned A → B → A loop, map each retired old address to the confirmed final page. If one address should itself be a live page, have its owner remove the wrong redirect and restore that page before testing. Record the planned change in Reason / owner / due date.
If the detour is on another site but a checked final destination serves the same purpose, choose Edit source link and point your link directly there. Keep any unresolved outside redirect-rule work with its owner in Reason / owner / due date.
Set Status to Ready to fix only when the destination, owned edits, and owner authority are confirmed. Start with loops that prevent page access, then chains affecting main next steps or many source pages, before isolated old references.
Keep each useful old address working. Removing intermediate redirects without checking their other uses can create new missing pages.
For each existing owned rule that must change, follow the linked SOP’s existing-rule route. Edit the rule already matching that source, using your checked final URL; do not add a duplicate. Return after its saved-rule and live-response tests.
If the confirmed plan needs several new exact rules with no conflicting existing sources, use the linked batch SOP. Keep existing rules out of the import and correct them individually. Return after each new mapping has passed its tests.
For each source page in your log, open WordPress → Pages or Posts, find the page, and choose Edit.
Find the words or button listed in Source page / link location. Select the link, choose Edit in the link control, replace the old destination with Final URL, and confirm. Repeat every recorded occurrence.
Preview the page and read the changed link in context. Use Update or Save to publish. If another person publishes, keep Status at Waiting for owner and put their name and date in Reason / owner / due date.
Test old URLs and changed source links separately. A repaired page link can look correct while the old address still loops.
Use the Network panel again after the repairs. Test every affected old URL in the route, including intermediate old addresses you kept.
Clear the log between test URLs. Confirm a permanently moved old URL returns a 301 directly to Final URL, which returns 200 and has the expected content. Check the planned query/slash variants using the linked redirect procedure. If an address was restored as a page, it should load that page directly.
In Live route after, enter each tested old URL, response, final address, and date. Include retained intermediate URLs. If a rule fails, use the linked procedure’s undo/correction route, fix that exact rule, and repeat its tests.
Reopen each published source page as a reader and click every changed link at the recorded location.
Check the link words still describe Final URL and the page actually opens there. A route on another website may be fixed only by its owner; record the result you can observe.
Append the source page, clicked-link result, and date to Live route after. Correct a failed source edit and repeat the check.
Return to the same Site Audit campaign, choose Rerun campaign, and wait for it to complete.
Enter Scope → After crawl date and After pages crawled. In Crawled Pages, confirm every changed source and any reported old URL still linked or listed in the crawl source were included. Carry missed or blocked pages into Coverage gaps. An old URL removed from all links may not be discovered again; its separate live request test proves the rule.
Reopen Redirect chains and loops. For each logged start URL, write the actual fresh result in Fresh crawl check: cleared from the checked source, still reported, or not rechecked. If the old URL is no longer discovered, state that too. Keep any browser/crawler difference open for its owner.
Set Status to Repaired only when the required old-URL and source-link tests pass and the fresh crawl inspected the changed source without that route. For a rule with no source link, require its old URL to be crawled. Repeat the tracing and repair for remaining or new routes in the selected scope.
Review all pages of the fresh chain/loop report against your log and update Scope → Remaining work / next review.
Combine section batches and account for every reported route and source. Keep unresolved rows with their owner, required action, and follow-up date. If there are missing sections or untested rules, describe the work as partial.
Write the outcome and next review date in Remaining work / next review. Share your private log with the person who requested the repairs through your usual work channel.