connect-modrewrite
Version:
connect-modrewrite adds modrewrite functionality to connect/express server
96 lines (70 loc) • 2.9 kB
Markdown
connect-modrewrite [](https://travis-ci.org/tinganho/connect-modrewrite)
========================
[](https://nodei.co/npm/connect-modrewrite/)
`connect-modrewrite` adds modrewrite functionality to connect/express server.
# Getting started
Install `connect-modrewrite` with:
```bash
npm install connect-modrewrite --save
```
Require it:
```javascript
var modRewrite = require('connect-modrewrite');
```
An example configuration:
```javascript
var app = connect() // express() for express 3.x server
// app.configure(function() { for express 3.x server
.use(modRewrite([
'^/test$ /index.html',
'^/test/\\d*$ /index.html [L]',
'^/test/\\d*/\\d*$ /flag.html [L]'
]))
.use(connect.static(options.base))
.listen(3000)
// }) for express 3.x server
```
# Configurations
In the example above, `modRewrite` take as an `Array` of rewrite rules as an argument.
Each rewrite rule is a string with the syntax:
`MATCHING_PATHS REPLACE_WITH [FLAGS]`.
`MATCHING_PATHS` should be defined using a regex string. And that string is passed as an argument to the javascript `RegExp Object` for matching of paths. `REPLACE_WITH` is the replacement string for matching paths. Flags is optional and is defined using hard brackets.
## Inverted URL matching
Begin with `!` for inverted URL matching.
## Use defined params
Just wrap the defined param with `()` and access it with `$n`. This is defined in JS `.replace` in https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/String/replace.
`^/blog/(.*) /$1`
## Dash
A dash indicates that no substitution should be performed.
`^/blog/(.*) - [L]`
## Flags
### Last [L]
If a path matches, any subsequent rewrite rules will be disregarded.
### Proxy [P]
Proxy your requests
```javasript
'^/test/proxy/(.*)$ http://nodejs.org/$1 [P]'
```
### Redirect [R], \[R=3**\] (replace * with numbers)
Issue a redirect for request.
### Nocase [NC]
Regex match will be case-insensitive.
### Forbidden [F]
Gives a HTTP 403 forbidden response.
### Gone [G]
Gives a HTTP 410 gone response.
### Type \[T=*\] (replace * with mime-type)
Sets content-type to the specified one.
### Host [H], \[H=*\] (replace * with a regular expression that match a hostname)
Match on host.
For more info about available flags, please go to the Apache page:
http://httpd.apache.org/docs/current/rewrite/flags.html
## Authors
Tingan Ho, [@tingan87][]
## License
Licensed under the MIT license.
## Other recommended projects
### L10ns
[L10ns][] is an internationalization workflow and formatting tool. It handles complex localization problems like pluralization, genus based formatting etc. It also provides a workflow similar to XGettext.
[@tingan87]: https://twitter.com/tingan87
[L10ns]: http://l10ns.org