Boneyard Tools

Bulk Redirect Map Builder

Paste or build a list of old and new URLs, pick your server, and get a ready-to-paste redirect block for nginx, Apache, Netlify, CSV, or JSON. Every redirect defaults to a permanent 301, and you can set 302 per row. It all runs in your browser, so nothing you enter is uploaded.

How to build a redirect map

  1. Add a row for each redirect with the old path in 'from' and the new path in 'to', setting 301 or 302 per row.
  2. Choose your target format: nginx, Apache, Netlify, CSV, or JSON.
  3. Copy the generated block or download it, then drop it into your server config or redirects file.

Examples

A single 301 in Apache format

[{ from: "/old-page", to: "/new-page" }] as Apache
Redirect 301 /old-page /new-page

The same redirect in nginx format

[{ from: "/old-page", to: "/new-page" }] as nginx
rewrite ^/old-page$ /new-page permanent;

A temporary 302 in Netlify format

[{ from: "/sale", to: "/summer-sale", status: 302 }] as Netlify
/sale  /summer-sale  302

Frequently asked questions

Is my list of URLs sent to a server?

No. The whole redirect map is built in your browser with JavaScript. Nothing you type is uploaded, logged, or stored, so it is safe to use with internal paths, staging URLs, or a migration plan that is not live yet.

What is the difference between a 301 and a 302 redirect?

A 301 is permanent and tells search engines to pass ranking signals to the new URL, so it is the right choice for moved or merged pages. A 302 is temporary and keeps the old URL indexed, which suits short promotions or A/B tests. Every row defaults to 301 and you can switch any row to 302.

Which formats can it export?

Five: nginx rewrite directives, Apache Redirect lines, a Netlify _redirects file, a CSV with a from,to,status header, and a JSON array. Pick the one that matches your stack and paste the result straight into your config or redirects file.

How does the nginx output handle different status codes?

A 301 becomes 'rewrite ^/old$ /new permanent;' and a 302 becomes 'rewrite ^/old$ /new redirect;'. Any other 3xx code, such as 307 or 308, is written as an explicit 'return' inside a location block so the exact status is preserved.

What happens to rows with a missing path?

Any row that is missing either the from or the to value is skipped, so a half-finished line never produces a broken rule. If no row has both paths filled in, the builder asks you to add at least one complete redirect.

Where do I put the generated redirects?

nginx directives go inside a server block, Apache Redirect lines go in your .htaccess or vhost config, and the Netlify lines go in a file named _redirects at the root of your published site. CSV and JSON are handy for spreadsheets, audits, or feeding another script.

Related tools