Redirect check handover report

File: redirects-sample.csv · Checked: sample · Store domains: example-store.com, example-store.myshopify.com · Live URLs supplied: 16 · Old URLs checked: 9

Summary

43rows in file
38unique sources
12errors
9warnings
10notes
RuleMeaningSeverityCount
from-invalidSource missing or not a patherror2
to-invalidTarget missing or invaliderror1
conflictSame source, different targetserror1
self-redirectRedirects to itselferror1
loopRedirect looperror5
target-404Target is not a live URL (will 404)error2
duplicateExact duplicate rowwarning1
chainRedirect chainwarning3
from-liveSource is a live page (redirect will not fire)warning1
external-targetTarget is on another domainwarning1
old-no-redirectOld URL has no redirectwarning3
homepage-targetTarget is the homepageinfo6
from-formatSource has a query string, capitals, spaces or unencoded charactersinfo4

All issues (26)

SeverityRuleRowFromToExplanation and suggested fix
errorfrom-invalid15old-page-no-slash/pages/aboutThe source does not start with "/". Shopify requires a path.
Fix: Add a leading slash, for example "/old-page-no-slash".
errorfrom-invalid16/pages/aboutThe "Redirect from" value is empty.
Fix: Fill in the old path, for example /old-page, or delete the row.
errorto-invalid17/no-targetThe "Redirect to" value is empty.
Fix: Fill in the target path or URL, or delete the row.
errorconflict18
rows 18, 19
/summer-sale/collections/new-arrivals | /collections/mugsThe same source appears 2 times with different targets (rows 18, 19). Shopify keeps only one, and which one is not something you should rely on.
Fix: Decide which target is correct and delete the other rows. This tool leaves conflicting rows unchanged.
errorself-redirect21/sample-self/sample-selfThe source and target are the same, so visitors would be sent back to the same URL forever.
Fix: Delete this row or point it to the correct target. The fixed CSV removes it.
errorloop22/loop-a/loop-bPart of a redirect loop of 2: /loop-a → /loop-b → /loop-a. Browsers stop with "too many redirects".
Fix: Break the loop by deleting or correcting one of these rows. The fixed CSV removes all rows in the loop and lists them in the removed-rows CSV.
errorloop23/loop-b/loop-aPart of a redirect loop of 2: /loop-b → /loop-a → /loop-b. Browsers stop with "too many redirects".
Fix: Break the loop by deleting or correcting one of these rows. The fixed CSV removes all rows in the loop and lists them in the removed-rows CSV.
errorloop24/ring-1/ring-2Part of a redirect loop of 3: /ring-1 → /ring-2 → /ring-3 → /ring-1. Browsers stop with "too many redirects".
Fix: Break the loop by deleting or correcting one of these rows. The fixed CSV removes all rows in the loop and lists them in the removed-rows CSV.
errorloop25/ring-2/ring-3Part of a redirect loop of 3: /ring-2 → /ring-3 → /ring-1 → /ring-2. Browsers stop with "too many redirects".
Fix: Break the loop by deleting or correcting one of these rows. The fixed CSV removes all rows in the loop and lists them in the removed-rows CSV.
errorloop26/ring-3/ring-1Part of a redirect loop of 3: /ring-3 → /ring-1 → /ring-2 → /ring-3. Browsers stop with "too many redirects".
Fix: Break the loop by deleting or correcting one of these rows. The fixed CSV removes all rows in the loop and lists them in the removed-rows CSV.
errortarget-40430/old-shop/brass-hook/products/brass-hook-v2The target is an internal path that is not in your live URL list, so visitors will land on a 404 page.
Fix: Check the spelling of the target, add the missing page or product to the store, or redirect to the closest live page.
errortarget-40431/discontinued/teapot/products/teapotThe target is an internal path that is not in your live URL list, so visitors will land on a 404 page.
Fix: Check the spelling of the target, add the missing page or product to the store, or redirect to the closest live page.
warningduplicate20/old-shop/blue-mug/products/blue-mugSame source and target as row 2.
Fix: Delete this row. The fixed CSV does this for you.
warningchain27/legacy/oak-tray/old-shop/oak-trayRedirect chain of 2 hops: /legacy/oak-tray → /old-shop/oak-tray → /products/oak-tray. Each hop adds a request and delays the page.
Fix: Point /legacy/oak-tray straight to /products/oak-tray. The fixed CSV does this.
warningchain28/v1/blue-mug/legacy-blue-mugRedirect chain of 3 hops: /v1/blue-mug → /legacy-blue-mug → /old-shop/blue-mug → /products/blue-mug. Each hop adds a request and delays the page.
Fix: Point /v1/blue-mug straight to /products/blue-mug. The fixed CSV does this.
warningchain29/legacy-blue-mug/old-shop/blue-mugRedirect chain of 2 hops: /legacy-blue-mug → /old-shop/blue-mug → /products/blue-mug. Each hop adds a request and delays the page.
Fix: Point /legacy-blue-mug straight to /products/blue-mug. The fixed CSV does this.
warningfrom-live32/pages/faq/pages/contactA page already exists at this path on the new store. Shopify serves the page and ignores the redirect, so it will never fire.
Fix: Delete the row if the page should stay, or change the page's URL handle if you want the redirect to apply.
warningexternal-target33/partners/studiohttps://partner-studio.example/shopThe target is on another domain (partner-studio.example).
Fix: Confirm this is intended. If the domain is your own store, add it to the store domains field.
warningold-no-redirectold list #4/old-shop/teapot-setThis old URL has no redirect and is not live on the new store, so it will 404 after launch.
Fix: Add a redirect to the closest matching page.
warningold-no-redirectold list #5/old-shop/linen-apronThis old URL has no redirect and is not live on the new store, so it will 404 after launch.
Fix: Add a redirect to the closest matching page.
warningold-no-redirectold list #9https://example-store.com/old-category/jugsThis old URL has no redirect and is not live on the new store, so it will 404 after launch.
Fix: Add a redirect to the closest matching page.
infohomepage-target35
rows 35, 36, 37, 38, 39, 40
(6 rows)/6 rows redirect to the homepage (rows 35, 36, 37, 38, 39, 40). Redirecting many old URLs to the homepage is usually treated as a soft 404 by Google, and visitors lose the page they were looking for.
Fix: Redirect to the closest matching product, collection or page instead.
infofrom-format41/Old-Shop/Wool-Throw?ref=nav/products/wool-throwThe source contains a query string, uppercase letters. Shopify can match query strings, so this redirect only fires for URLs with exactly this query. Confirm that is what you want. Paths are compared case-insensitively here and on Shopify, so capitals are harmless.
Fix: Clean up the source if the extra parts are not intended.
infofrom-format42/old shop/wool throw/products/wool-throwThe source contains spaces. Percent-encode these characters (a space is %20) so the import and the browser agree.
Fix: Clean up the source if the extra parts are not intended.
infofrom-format43/old-shop/café-mug/products/blue-mugThe source contains characters that are not URL-encoded. Percent-encode these characters (a space is %20) so the import and the browser agree.
Fix: Clean up the source if the extra parts are not intended.
infofrom-format44/search?q=mug,bowl/collections/mugsThe source contains a query string. Shopify can match query strings, so this redirect only fires for URLs with exactly this query. Confirm that is what you want.
Fix: Clean up the source if the extra parts are not intended.

Changes made in the fixed CSV

Chains collapsed to the final target (3), exact duplicates, self-redirects and loops removed (7). Nothing else was changed.

Chains collapsed

RowFromOld targetNew targetHops
27/legacy/oak-tray/old-shop/oak-tray/products/oak-tray2
28/v1/blue-mug/legacy-blue-mug/products/blue-mug3
29/legacy-blue-mug/old-shop/blue-mug/products/blue-mug2

Rows removed

Original rowFromToReason
20/old-shop/blue-mug/products/blue-mugExact duplicate of row 2
21/sample-self/sample-selfSelf-redirect (loop of length 1)
22/loop-a/loop-bPart of a redirect loop (2 rows)
23/loop-b/loop-aPart of a redirect loop (2 rows)
24/ring-1/ring-2Part of a redirect loop (3 rows)
25/ring-2/ring-3Part of a redirect loop (3 rows)
26/ring-3/ring-1Part of a redirect loop (3 rows)

Left unchanged, needs a decision

1 conflict(s): the same source has different targets. These rows are kept as they are in the fixed CSV and must be resolved by hand (rows 18, 19).