301 Redirect with Express

By  on  

If you've created a site using Node.js, there's a great chance you've used the Express framework.  Express has turned into a massive project and for good reason:  it's loaded with useful functionality, an easy API, and massive community support.  On of my recent projects was using Express and I loved it!

One problem I recently needed to solve was creating a 301 redirect from an old staging domain to the new production domain.  Here's how you can create that 301 redirect with Express:

app.use(function forceLiveDomain(req, res, next) {
  // Don't allow user to hit Heroku now that we have a domain
  var host = req.get('Host');
  if (host === 'serviceworker-cookbook.herokuapp.com') {
    return res.redirect(301, 'https://serviceworke.rs/' + req.originalUrl);
  }
  return next();
});

Surprisingly the redirect code is the first argument to redirect instead of the URL.  It's important to call next() at the end of the function or a non-match will make your app hang!

Recent Features

  • By
    Write Better JavaScript with Promises

    You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes them so special. Can't you just use a callback? What's the big deal? In this article, we'll...

  • By
    Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

Incredible Demos

  • By
    Facebook-Style Modal Box Using MooTools

    In my oh-so-humble opinion, Facebook's Modal box is the best modal box around. It's lightweight, subtle, and very stylish. I've taken Facebook's imagery and CSS and combined it with MooTools' awesome functionality to duplicate the effect. The Imagery Facebook uses a funky sprite for their modal...

  • By
    Create a Clearable TextBox with the Dojo Toolkit

    Usability is a key feature when creating user interfaces;  it's all in the details.  I was recently using my iPhone and it dawned on my how awesome the "x" icon is in its input elements.  No holding the delete key down.  No pressing it a...

Discussion

  1. Great code snippet and saved me a ton of time. Thanks!

  2. Joe

    You shouldn’t have the trailing slash after serviceworke.rs. I.e. instead of this:

    res.redirect(301, 'https://serviceworke.rs/' + req.originalUrl);
    

    It should be this:

    res.redirect(301, 'https://serviceworke.rs' + req.originalUrl);
    

    Otherwise it redirects to:

    https://serviceworke.rs//the/path
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!