Bulk import 301 redirects

I have to set up about a bajillion redirects this weekend. Would be awesome to have a similar feature to the CMS import to be able to add redirects in bulk.

  • Chris Scott
  • Jul 1 2017
  • Rodrigo Demetrio commented
    5 Feb 02:45pm

    up

  • Haris Barki commented
    18 Jan 06:50pm

    Browser console, pure javascript way to do

    var redirectFromField = document.getElementById('form-group-23-35');
    redirectFromField.focus();
    document.execCommand('insertText', false, '/old');

    var redirectToField = document.getElementById('form-group-24-36');
    redirectToField.focus();
    document.execCommand('insertText', false, '/new');

    var redirectBtn = document.getElementsByClassName('--styled-icqbRT --pick-bisZcG wf-13ezjsp')[0];
    redirectBtn.click()

  • David Chapman commented
    15 Jan 11:56pm

    Well I voted, and it's now at 251 votes. I have about 1550 blog posts to migrate for a client and their structure was rootdomain.com/title-of-post and now I need them all to be rootdomain.com/blog/title-of-post. Great...

  • Tucker Lemos commented
    14 Dec, 2023 09:19pm

    would be great and save a lot of hours

  • Ievgenii Kobzar commented
    21 Oct, 2023 04:29am

    It's funny!!!

    Since 2017 (6 years) users have been asking to add the ability to mass import a list of redirects and WF is not itching.

    I don't know whether to cry or laugh. We plan to migrate 30 sites to WF and each site has up to 1000 pages. I can already imagine this process of adding redirects by 1 piece.

    It's sad...

  • Pim Veger commented
    9 Oct, 2023 10:35pm

    Help! Webflow updated to a new Interface and now Finsweet's option AND the option below with the script in the console in Chrome are no longer working... Does anyone have another way to bulk import? Please help!

  • Chris commented
    20 Mar, 2023 09:51am

    It's not just about mass import - you might need to manage them later as well. The best thing would be a simple plain text field to where you could comment out redirects as well.

    Inside that field you simply copy paste all your urls in a certain (CSV?) Format - done :)

    /old,/new
    #/old2,/new2

  • Joe Kneale commented
    28 Nov, 2022 07:10pm

    None of the code snippets (that would be pasted into console) work - do what Michael recommends below to import/export, use Finsweet - it's f'in sweet!

  • Michael Wells commented
    31 Oct, 2022 08:52pm

    For CSV imports, use Finsweet's free Chrome extension.

    You get a nice import button on your redirects page.

    https://chrome.google.com/webstore/detail/finsweet-extension-for-we/mjfibgdpclkaemogkfadpbdfoinnejep

    For CSV exports, you can use my script here-

    https://www.sygnal.com/blog/export-301-redirects-as-csv

  • Dave Radparvar commented
    28 Sep, 2022 09:38am

    Still waiting for this feature, and along the same lines ability to bulk export as well!

  • Nozzle Ai commented
    31 Aug, 2022 09:24am

    Hey everyone,

    The original script is no longer working but I've updated it so that it works in the publishing tab/current setup


    var hostingContainer = document.getElementsByClassName('redirects')[0];

    var hostingController = angular.element(hostingContainer);

    var scope = hostingController.scope();

    var redirects = [

    {redirectPath: '/old-path', redirectTarget: '/new-path'},

    ];

    redirects.forEach(function (rule) {

    scope.redirectPath = rule.redirectPath;

    scope.redirectTarget = rule.redirectTarget;

    scope.addRedirect();

    });


    Just some small tweaks but it worked well for me :)

  • Megan Tilton commented
    16 May, 2022 04:25pm

    Yes, please!

  • Graphite Marketing commented
    27 Feb, 2022 07:40am

    Yes please!

  • Juraj Carnecky commented
    23 May, 2021 02:48pm

    Yes please :)

  • Abby Cameron commented
    30 Apr, 2021 01:57pm

    Yes please! Would love the ability to import all redirects!

  • Max Shepley commented
    8 Feb, 2021 03:39pm

    I have created a short tutorial showing how you can use Janne's hack AND Parabola to bring together your URL links and follow the var redirects structure. Hopefully some find it helpful!

    https://www.sunrise.design/resources/bulk-import-301s

  • Max Shepley commented
    3 Jan, 2021 05:16pm

    I've made a video to build on the use of the script posted below. The script is amazing but isn't too helpful if you have 1000+ items and don't want to manually enter them into the script. Using Parabola's free tier, you can do this really quickly! Check it out: https://youtu.be/fhHLOyVrwkk

        var hostingContainer = document.getElementsByClassName('hosting-tab')[0];
    var hostingController = angular.element(hostingContainer);
    var scope = hostingController.scope();

    var redirects = [
    {source: '/old1', target: '/new1'},
    {source: '/old2', target: '/new2'},
    {source: '/old3', target: '/new3'},
    {source: '/old4', target: '/new4'},
    ];

    redirects.forEach(function (rule) {
    scope.redirectPath = rule.source;
    scope.redirectTarget = rule.target;
    scope.addRedirect();
    });
  • CareValue commented
    16 Oct, 2020 09:04pm

    Janne's hack worked!!!! I put 800 redirects into an excel sheet, concatenated the data together to follow the var redirects structure, and then copy and pasted into the google dev console. No need for a timeout, this hack is truly awesome. Thank you Janne!!!!!

    "This hack works at least with few redirects in the list. If more, maybe some sort of a timeout between addRedirect calls is in place...

    So you run this code in Google Chrome developer console as logged in user in Webflow on the Hosting tab in admin section pages. Just copy/paste the code to the console. Before that prepare the redirects-list with your own redirect rules.

        var hostingContainer = document.getElementsByClassName('hosting-tab')[0];
    var hostingController = angular.element(hostingContainer);
    var scope = hostingController.scope();

    var redirects = [
    {source: '/old1', target: '/new1'},
    {source: '/old2', target: '/new2'},
    {source: '/old3', target: '/new3'},
    {source: '/old4', target: '/new4'},
    ];

    redirects.forEach(function (rule) {
    scope.redirectPath = rule.source;
    scope.redirectTarget = rule.target;
    scope.addRedirect();
    });
  • James Seigel commented
    16 Sep, 2020 06:15pm

    Please!

  • Gustavo Alonge commented
    9 Sep, 2020 11:46am

    Yes! Please!

  • Load older comments
  • +162