Redirect rule generator:Which redirect rules does your migration need?
Paste old and new URLs, up to 10,000 rows, and get exact-match 301 rules for your server, with chains collapsed and loops removed.
Paste two columns from a spreadsheet, a CSV, or pairs separated by spaces. Paths (/old) or full URLs. An optional third column sets the status (301, 302, 307, 308). Up to 10,000 rows.
Processed in your browser. Your list is never uploaded.
6 rules ready, 2 notes below.
2 notes on your input
- Line 3/shop/red-shirt → /products/red-shirt continues 1 more hop; pointed straight at /products/red-shirt-2026
- Line 8/old-page redirects to itself, dropped
Your redirect rules
Paste at the top of .htaccess in the site root, above other rewrite rules.
# Exact-match redirects, generated by getReport (getreport.app/tools/redirect-generator)
# Place above other rewrite rules (for WordPress: above "# BEGIN WordPress").
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^shop/blue-shirt$ /products/blue-shirt [R=301,L]
RewriteRule ^shop/red-shirt$ /products/red-shirt-2026 [R=301,L]
RewriteRule ^products/red-shirt$ /products/red-shirt-2026 [R=301,L]
RewriteRule ^about-us\.html$ /about [R=301,L]
RewriteCond %{QUERY_STRING} ^page=contact$
RewriteRule ^index\.php$ /contact? [R=301,L]
RewriteRule ^blog/2019/sale$ https://example-shop.hr/blog/ [R=301,L]
</IfModule>
- Free, no account
- Runs in your browser
- Up to 10,000 rows
What this tool checks
Rules for Apache, nginx, Cloudflare Bulk Redirects, Netlify, Vercel and Caddy, built from your list in your browser.
Paste it as you have it
Two columns from a spreadsheet, a CSV, or pairs separated by spaces, with an optional status per row.
Every row checked
Sources on another domain, targets that are not URLs, duplicates, conflicting rows and redirects to themselves are flagged.
Loops and chains fixed
Loops (A → B → A) are removed and chains (A → B → C) are pointed straight at their final page.
Exact matches only
A plain Apache Redirect line also catches everything below the path. Here /shop redirects /shop and nothing else.
Query strings handled
URLs such as /index.php?page=contact get the right construct for each server.
Six server formats
Apache .htaccess, nginx, Cloudflare Bulk Redirects, Netlify, Vercel or Caddy.
Show 2 more checks
Query strings handled
URLs such as /index.php?page=contact get the right construct for each server.
Six server formats
Apache .htaccess, nginx, Cloudflare Bulk Redirects, Netlify, Vercel or Caddy.
How it works
Paste your list
Paste old and new URLs, one pair per row. The list is parsed as you type.
Review the warnings
Duplicates, conflicts, loops and chains are reported, and chains are pointed at their final page before a rule is written.
Copy the rules
Pick your server and copy the exact-match 301 rules into its configuration.
The rules come from your list only; the tool doesn't request any URL. After deploying, paste the old URLs into the bulk URL checker to confirm each takes one hop.
Questions
Is this really free?
Yes. getReport is funded by donations, not plans. This tool runs entirely in your browser, so there is no limit and nothing to pay for.
301 or 302?
Use 301 (or 308) when the move is permanent: search engines transfer the old URL’s signals to the new one. Use 302 or 307 only for temporary moves such as a seasonal page. 307 and 308 keep the request method, which matters only for form posts and APIs.
Should I redirect everything to the home page?
No. Google treats a redirect to an unrelated page as a soft 404 and ignores it. Redirect each old URL to its closest equivalent; let pages with no equivalent answer 404 or 410.
Why does a migration need exact, one-hop redirects?
Every old URL that answers 404 after a relaunch loses the links and rankings it had. Every chain costs a round trip for visitors and makes crawlers give up sooner. Writing hundreds of rules by hand is where both slip in. Rules generated from one list are consistent, reviewable and easy to redo when the list changes. Check them after deploying: paste the old URLs into the bulk URL checker and every row should show one hop to the right page.
My site runs WordPress. Where do the rules go?
On Apache hosting, at the top of .htaccess, above the # BEGIN WordPress block. On nginx hosting ask the host to add the map, or use a redirect plugin and import the CSV. Rules in the server run before WordPress loads, so they are faster than a plugin.
Related free tools
All 41 tools →Free, funded by the people who use it
€0 of €75 this month. At €75, site crawl up to 500 pages + weekly re-check switches on for everyone.