koa-history-api-fallback
v1.0.0
Published
Provides a fallback for non-existing directories so that the HTML 5 history API can be used for Koa.
Downloads
1,891
Readme
Version 1.0.0 includes fix for koa v3.
Introduction
This is simple rewrite of connect-history-api-fallback
Usage
The middleware is available through NPM and can easily be added.
npm install --save koa-history-api-fallback
Import the library
var historyApiFallback = require('koa-history-api-fallback');
var app = koa();
app.use(historyApiFallback());
Options
You can optionally pass options to the library when obtaining the middleware
var middleware = historyApiFallback({});
index
Override the index (default /index.html
)
historyApiFallback({
index: '/default.html'
});
rewrites
Override the index when the request url matches a regex pattern. You can either rewrite to a static string or use a function to transform the incoming request.
The following will rewrite a request that matches the /\/soccer/
pattern to /soccer.html
.
historyApiFallback({
rewrites: [
{ from: /\/soccer/, to: '/soccer.html'}
]
});
Alternatively functions can be used to have more control over the rewrite process. For instance, the following listing shows how requests to /libs/jquery/jquery.1.12.0.min.js
and the like can be routed to ./bower_components/libs/jquery/jquery.1.12.0.min.js
. You can also make use of this if you have an API version in the URL path.
historyApiFallback({
rewrites: [
{
from: /^\/libs\/.*$/,
to: function(context) {
return '/bower_components' + context.parsedUrl.pathname;
}
}
]
});
The function will always be called with a context object that has the following properties:
- parsedUrl: Information about the URL as provided by the URL module's
url.parse
. - match: An Array of matched results as provided by
String.match(...)
.
verbose
This middleware does not log any information by default. If you wish to activate logging, then you can do so via the verbose
option or by specifying a logger function.
historyApiFallback({
verbose: true
});
Alternatively use your own logger
historyApiFallback({
logger: console.log.bind(console)
});