forcedomain

forcedomain is a middleware for Connect and Express that redirects any requests to a default domain.


Keywords
connect, express, middleware, redirect
License
MIT
Install
npm install forcedomain@2.2.11

Documentation

forcedomain

forcedomain is a middleware for Connect and Express that redirects any request to a default domain, e.g. to redirect to either the www or the non-www version of a domain.

Status

Category Status
Version npm
Dependencies David
Dev dependencies David
Build GitHub Actions
License GitHub

Installation

$ npm install forcedomain

Quick start

The first thing you need to do is to integrate forcedomain into your application. For that add a reference to the forcedomain module:

const { forceDomain } = require('forcedomain');

If you use TypeScript, use the following code instead:

import { forcedomain } from 'forcedomain';

If you now want to redirect your requests to a specific host, include the middleware and configure it accordingly:

app.use(forceDomain({
  hostname: 'www.example.com'
}));

Additionally, you can also specify a port and a target protocol:

app.use(forceDomain({
  hostname: 'www.example.com',
  port: 4000,
  protocol: 'https'
}));

By default, forcedomain redirects using permanent request. This is generally considered best practice with respect to SEO, as it tells search engines that there is a single long-term canonical address for a ressource.

If you want to use a temporary redirect instead, specify it as redirection type:

app.use(forceDomain({
  hostname: 'www.example.com',
  type: 'temporary'
}));

You can use excludeRule to disable redirect based on a regular expression:

app.use(forceDomain({
  hostname: 'www.example.com',
  excludeRule: /[a-zA-Z0-9][a-zA-Z0-9-]+\.herokuapp\.com/i
}));

You can use isEnabled to enable or disable redirection. Default value is true.

app.use(forceDomain({
  hostname: 'www.example.com',
  isEnabled: false
}));

Please note that localhost and local IPs (127.0.0.1, 192.168.x.x) are always being excluded from redirection. Hence you can continue developing locally as you are used to.

Using a reverse-proxy

If you are running your web application behind a reverse proxy such as Nginx, you have to forward the originally requested host.

server {
  // ...

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $http_host;
  }
}

Running the build

To build this module use roboter.

$ npx roboter