node package manager


connect-cleaner - simple url sanitizer


Simple url sanitizer for connect and express.

Redirects trailing slash urls, normalizes letter case differences and cleans garbage from your URLs.

Inspired by connect-slashes.

$ npm install connect-cleaner
var connect = require('connect');
var cleaner = require('connect-cleaner');
var config  = require('config');
  .use(cleaner(302)) // ideally, put cleaner as earlier as possible 

By default, cleaner responses with "fast 400"* on requests like //?/?///. Optionaly clear takes one argument which can be an Object (options) or Number (redirect code).

* By "fast 400" I mean that cleaner responses with unstyled 400 without body as soon as possible

  • add <false> - determines if cleaner should add trailing slash. If true sets clean to false.
  • clean <true> - determines if cleaner should clean trailing slash(es). Can be overrided by add and sanitize options.
  • code <301> - determines redirect code.
  • normilize <false> - determines if cleaner should normilize differences in letter cases in pathname. It's important to note that cleaner only fixes letter casing on pathname- querystring not affected.
  • sanitize <false> - determines if claener should clean (sanitize) garbage in url (includes [/?&=], also sets clean to false).

Post-initialization mutablity

var instance = cleaner(); // We need access to middleware for later configuring 
// Later... 
instance.set(code, 302);
// or 
insatnce.set({ add: true, sanitize: true });
// Also we have more generic acces to `_options` object 
instance.get('code'); // => 302 
// or 
/* =>
  add: true,
  clean: false,
  code: 302,
  sanitize: true,
  normalize: false
Options Request Response Code
(default) ///?/?/? - 400
(default) /Users//?foo=Bar&age=21& /Users?foo=Bar&age=21& 301
code: 302 /Users//?foo=Bar&age=21& /Users?foo=Bar&age=21& 302
normalize, code: 302 /Users//?foo=Bar&age=21& /users?foo=Bar&age=21& 302
sanitize, code: 302 /Users//?foo=Bar&age=21& /Users?foo=Bar&age=21 302
normalize, sanitize, code: 302 /Users//?foo=Bar&age=21& /users?foo=Bar&age=21 302
(default) /users?foo=Bar&age=21 - Pass thrue, url is fine
add /users?foo=Bar&age=21 /users/?foo=Bar&age=21 301