Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

express-slash

ericf9.1k2.0.1

Express middleware for people who are anal about trailing slashes.

express, express3, url, urls, slash, trailing, slashes, route, routes, routing, modown

readme

Express Slash

Dependency Status npm Version

Express middleware for people who are anal about trailing slashes.

If you're a good person, then you enable Express' "strict routing" because you understand the difference between /about and /about/. You know that these URLs are not the same and they have different meanings. The trouble is, being a good person and caring about your trailing slashes is harder than not. Plus, you also care about other people, and it would be rude to 404 them when they forget the trailing slash. Luckily, there's this package to solve all your trailing slash problems :D

This Express middleware should come after your app's router middleware. It will handle [GET and HEAD] requests for URLs which did not have a matching route by either adding or removing a trailing slash to the URL's path, then checking the app's router for a matching route for the new URL, in which case it will redirect the client (301 by default) to that URL.

Note: Choose the correct version of this package for your Express version:

  • v1.x: Express 3.x
  • v2.x: Express 4.x

Installation

Install using npm:

$ npm install express-slash

Usage

Enable Express' "strict routing" setting, and add this middleware after your app's router middleware:

var express = require('express'),
    slash   = require('express-slash');

var app = express();

// Because you're the type of developer who cares about this sort of thing!
app.enable('strict routing');

// Create the router using the same routing options as the app.
var router = express.Router({
    caseSensitive: app.get('case sensitive routing'),
    strict       : app.get('strict routing')
});

// Add the `slash()` middleware after your app's `router`, optionally specify
// an HTTP status code to use when redirecting (defaults to 301).
app.use(router);
app.use(slash());

router.get('/', function (req, res) {
    res.send('Home');
});

router.get('/about/', function (req, res) {
    res.send('About');
});

router.get('/about/people', function (req, res) {
    res.send('People');
});

app.listen(3000);

Now when someone navigates to /about, they'll be redirected to /about/, and when someone navigates to /about/people/, they'll be redirected to /about/people.

License

This software is free to use under the MIT license. See the LICENSE file for license text and copyright information.

changelog

Express Slash Change History

2.0.1 (2014-07-09)

  • Fix bug with routers mounted with a use() path prefix. (#5 @awakenalive)

2.0.0 (2014-07-02)

  • [!] Added support for Express 4.x; this version does not work with Express 3.x anymore. (#4)

1.0.1 (2014-07-02)

  • Added tests. (#3 @balaclark)

1.0.0 (2014-01-03)

  • [!] Stable.

  • Defined a previously undefined var.

0.2.1 (2013-11-06)

  • Add "modown" keyword to package.json

0.2.0 (2013-04-20)

  • Changed the behavior of this middleware to be smarter about whether it should check for a route matching the new URL path that ends with or without a trailing slash.

  • Limited this middleware to only attempt to handle GET and HEAD HTTP requests.

0.1.0 (2013-03-09)

  • Initial release.