Set up redirects for old URLs

How to get there: Go to Settings in the sidebar → Redirects

Send old public URLs to a new page instead of showing a 404. Useful when you rename a board, remove a post, or migrate an old feedback tool onto ProductLift and want to keep the SEO value of the old URLs.

Redirects only trigger for public GET requests that would otherwise 404. They never override a real, existing page.

Add a single redirect

  1. Click Add redirect.
  2. Enter the source path (the old URL, e.g. /old-page or /roadmap-2023).
  3. Enter the destination. This can be a path on the same portal (/roadmap) or a full external URL (https://example.com/new-home).
  4. Pick a status code:
    • 301 (default) - permanent move, the SEO signal transfers to the destination.
    • 302 - temporary move, use when the old URL will come back.
    • 410 - the page is gone for good, no destination is sent. Leave the destination blank.
  5. Optional: add notes to remind yourself why the redirect exists.
  6. Save.

The source is normalised automatically: lowercased, leading slash added, trailing slash and query string removed. /OLD-Page/?ref=x and /old-page are the same rule.

Prefix redirects (wildcards)

Add /* to the end of the source to match everything under that path.

  • Source /blog/* with destination /news/* sends /blog/hello-world to /news/hello-world (the tail is preserved).
  • Source /blog/* with destination /news flattens everything under /blog/ to a single page.

Exact matches always win over prefix matches. When multiple prefixes could match, the longest one wins. Prefix matching respects path boundaries, so /docs/* does not accidentally match /docs-old/page.

Query strings

Query strings on the incoming URL are forwarded to the destination. If the destination already sets some query parameters, they win, and the incoming ones fill any gaps. Example:

  • Destination /target?utm=fixed&ref=x
  • Incoming /old?utm=incoming&extra=y
  • Result: /target?utm=fixed&ref=x&extra=y

Bulk import from CSV

For SEO migrations with many URLs, use Import CSV.

Expected columns (header row optional):

source,destination,status_code,notes
/old-page,/new-page,301,Renamed in July
/roadmap-2023,/roadmap,301,
/removed-feature,,410,Retired
/blog/*,/news/*,301,Blog folder move

  • status_code defaults to 301 if omitted.
  • 410 rows must leave the destination blank.
  • The importer previews the file as soon as you paste or upload it, so you can spot invalid rows before writing anything.
  • Imports are all-or-nothing. If any row is invalid, no rows are saved.

Export to CSV

Click Export CSV to download every redirect on the portal. The file uses the exact same column order as the importer (source,destination,status_code,notes), so you can edit it in a spreadsheet and re-import it, or hand it to another portal to seed the same rules. Existing sources are updated in place on re-import rather than duplicated.

Search and bulk delete

The list has a search box that matches the source, destination, or notes. Select multiple rows to delete them in one go.

Programmatic use

The same rules power the changelog importer and any other tool that needs to preserve old URLs. If you build an integration that renames or removes URLs, register the redirects through the API at /api/v1/redirects so the moves stay indexable.