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.
Category | Status |
---|---|
Version | |
Dependencies | |
Dev dependencies | |
Build | |
License |
$ npm install forcedomain
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.
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;
}
}
To build this module use roboter.
$ npx roboter