diff --git a/lib/steps/setupRedirects.js b/lib/steps/setupRedirects.js index a83bc0b..b1ece3a 100644 --- a/lib/steps/setupRedirects.js +++ b/lib/steps/setupRedirects.js @@ -36,10 +36,18 @@ const setupRedirects = (publishPath) => { // less-specific routes (e.g., catch-all) const sortedRoutes = getSortedRoutes(nextRedirects.map(({ route }) => route)); + // There may be several redirects with the same route but different targets + const wasRedirectAdded = (redirect) => { + return redirects.find((addedRedirect) => { + const [route, target] = addedRedirect.split(" "); + return redirect.route === route && redirect.target === target; + }); + }; + // Assemble redirects for each route sortedRoutes.forEach((route) => { const nextRedirect = nextRedirects.find( - (redirect) => redirect.route === route && !redirect.added + (redirect) => redirect.route === route && !wasRedirectAdded(redirect) ); // One route may map to multiple Netlify routes: e.g., catch-all pages @@ -60,8 +68,6 @@ const setupRedirects = (publishPath) => { const redirect = redirectPieces.join(" ").trim(); logItem(redirect); redirects.push(redirect); - // Enables us to add colliding route redirects - nextRedirect.added = true; }); });