301 Redirect Mapping Template
Complete guide to planning and validating all redirects for your site migration. Includes spreadsheet template structure, formulas, and bulk redirect testing with TurboSEO tools.
Create Your Own Redirect Map
Use Google Sheets or Excel to create a simple 5-column spreadsheet: Old URL | New URL | Redirect Type | Status | Notes. Follow the template structure and formulas below, then validate with our bulk redirect checker.
Tip: Start with a blank Google Sheet and use the column structure + formulas shown in this guide.
What's Included
Redirect Mapping Tab
Simple 5-column spreadsheet: Old URL, New URL, Redirect Type (301/302), Status, and Notes. Pre-formatted for 1,000+ redirects.
Bulk Find & Replace Formulas
Built-in formulas to change domain names, URL patterns, or path structures across hundreds of URLs at once.
Validation Instructions
Step-by-step guide to test all redirects using TurboSEO Bulk URL Checker. Catch broken redirects before launch.
Export Formats
Generate .htaccess, nginx.conf, or Next.js middleware code directly from your redirect map. Copy-paste ready.
Spreadsheet Template Structure
Copy the table below and paste it into a new Google Sheet or Excel file. This gives you the column headers and example rows to get started.
Redirect Map Template (Copy & Paste)
Select all rows, copy (Ctrl+C / Cmd+C), paste into your spreadsheet
| Old URL | New URL | Redirect Type | Status | Notes |
|---|---|---|---|---|
| https://old-site.com/about | https://new-site.com/about | 301 | To Test | Same page, new domain |
| https://old-site.com/blog/post-1 | https://new-site.com/articles/post-1 | 301 | To Test | Blog → Articles rename |
| https://old-site.com/old-product | https://new-site.com/shop/new-product | 301 | To Test | Product URL restructure |
| http://old-site.com/secure-page | https://old-site.com/secure-page | 301 | To Test | HTTP → HTTPS |
Pro Tip: Use Formulas for Bulk Changes
Instead of manually editing each URL, use spreadsheet formulas in column B (New URL) to transform URLs automatically. See examples in the "Common Redirect Patterns" section below.
Example: If you're changing domains, use =SUBSTITUTE(A2, "old-domain.com", "new-domain.com") in cell B2, then drag down.
How to Use This Template
Create your spreadsheet
Open Google Sheets or Excel. Copy the template table above and paste it into a new sheet.
Add your current URLs
Export all URLs from your current site using Screaming Frog, sitemap.xml, or Google Search Console. Paste them into Column A (Old URL), replacing the example rows.
Map to new URLs using formulas
In Column B (New URL), use SUBSTITUTE formulas to transform URLs automatically. Example: =SUBSTITUTE(A2, "old-domain.com", "new-domain.com") then drag down.
Set redirect type to 301
Fill Column C with "301" for permanent redirects (use for 99% of migrations). Only use "302" for temporary moves you plan to reverse.
Test all redirects in bulk
Copy all Old URLs from Column A. Paste into TurboSEO Bulk URL Checker. Verify all return 301 status codes and point to correct destinations.
Export redirect code
Use the code examples below to generate .htaccess, nginx.conf, or Next.js middleware redirects from your spreadsheet. Copy-paste and deploy.
Common Redirect Patterns
Domain Migration
Changing from old-site.com to new-site.com while keeping URL structure:
New URL: https://new-site.com/blog/post-title
Formula in B2: =SUBSTITUTE(A2, "old-site.com", "new-site.com")
URL Structure Change
Changing /blog/ to /articles/ while keeping slug names:
New URL: https://yoursite.com/articles/how-to-do-seo
Formula in B2: =SUBSTITUTE(A2, "/blog/", "/articles/")
HTTP to HTTPS Migration
Upgrading entire site to SSL:
New URL: https://yoursite.com/page
Formula in B2: =SUBSTITUTE(A2, "http://", "https://")
Path Parameter Cleanup
Removing query parameters or session IDs:
New URL: https://yoursite.com/product/123
Note: Manual mapping required for complex transformations
Export Code Examples
Apache .htaccess
For WordPress, shared hosting, or Apache servers
# 301 Redirects - Generated from TurboSEO Redirect Map
Redirect 301 /old-page https://yoursite.com/new-page
Redirect 301 /blog/old-post https://yoursite.com/articles/new-post
Redirect 301 /products/item-123 https://yoursite.com/shop/item-123
# Pattern-based redirect (all /blog/* to /articles/*)
RedirectMatch 301 ^/blog/(.*) https://yoursite.com/articles/$1
# Domain redirect (old domain to new domain)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-site\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.old-site\.com [NC]
RewriteRule ^(.*)$ https://new-site.com/$1 [L,R=301,NE]Nginx Configuration
For Nginx servers or cloud hosting
# 301 Redirects - Add to server block
location = /old-page {
return 301 https://yoursite.com/new-page;
}
location = /blog/old-post {
return 301 https://yoursite.com/articles/new-post;
}
# Pattern-based redirect
location ~ ^/blog/(.*) {
return 301 https://yoursite.com/articles/$1;
}
# Domain redirect
server {
server_name old-site.com www.old-site.com;
return 301 https://new-site.com$request_uri;
}Next.js Middleware
For Next.js App Router or Pages Router
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
const redirects: Record<string, string> = {
'/old-page': '/new-page',
'/blog/old-post': '/articles/new-post',
'/products/item-123': '/shop/item-123'
};
export function middleware(request: NextRequest) {
const pathname = request.nextUrl.pathname;
// Check for exact match
if (redirects[pathname]) {
return NextResponse.redirect(
new URL(redirects[pathname], request.url),
{ status: 301 }
);
}
// Pattern-based redirect: /blog/* → /articles/*
if (pathname.startsWith('/blog/')) {
const newPath = pathname.replace('/blog/', '/articles/');
return NextResponse.redirect(
new URL(newPath, request.url),
{ status: 301 }
);
}
return NextResponse.next();
}
export const config = {
matcher: ['/old-page', '/blog/:path*', '/products/:path*']
};Redirect Best Practices
Do This
- • Always use 301 (permanent) for SEO migrations
- • Test all redirects before launching
- • Redirect to the most relevant new page
- • Keep redirect chains to 1 hop maximum
- • Update internal links instead of relying on redirects
- • Monitor Search Console for 404 errors post-launch
- • Document your redirect map for future reference
Avoid This
- • ❌ Using 302 (temporary) redirects for permanent moves
- • ❌ Redirect chains: Old → Temp → New (wastes link equity)
- • ❌ Redirecting everything to homepage (very bad for SEO)
- • ❌ Forgetting to redirect old backlink URLs
- • ❌ Not testing redirects before launch
- • ❌ Leaving redirects in place for less than 1 year
- • ❌ Breaking redirects with server config changes