# connect-modrewrite

> connect-modrewrite adds modrewrite functionality to connect/express server

Latest version **0.10.2** (published 2017-10-31) · 0 weekly downloads

## Install

```sh
npm install connect-modrewrite
pnpm add connect-modrewrite
yarn add connect-modrewrite
bun add connect-modrewrite
```

## Health

**Score 18/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.10.2 |
| Published | 2017-10-31 |
| First published | 2013-02-10 |
| Weekly downloads | 0 |
| TypeScript types | separate (@types/connect-modrewrite) |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 120 |
| Author | Tingan Ho |
| Maintainers | tinganho |
| Keywords | modrewrite |

## Links

- npm: https://www.npmjs.com/package/connect-modrewrite
- Repository: https://github.com/tinganho/connect-modrewrite
- Homepage: https://github.com/tinganho/connect-modrewrite#readme
- Issues: https://github.com/tinganho/connect-modrewrite/issues
- npm.io page: https://npm.io/package/connect-modrewrite

## Dependencies (1)

- [qs](https://npm.io/package/qs.md) ^6.3.1

## Recent versions

- 0.10.2 (latest) — 2017-10-31
- 0.6.4-pre (canary) — 2014-03-11
- 0.10.1 — 2017-03-02
- 0.9.0 — 2016-03-12
- 0.8.5 — 2016-01-18
- 0.8.3 — 2016-01-17
- 0.8.2 — 2015-07-31
- 0.8.1 — 2015-04-27
- 0.8.0 — 2015-04-27
- 0.7.12 — 2015-04-27
- 0.7.11 — 2015-02-15
- 0.7.9 — 2014-08-24
- 0.7.8 — 2014-08-24
- 0.7.7 — 2014-08-01
- 0.7.6 — 2014-05-24
- … 47 more at https://npm.io/package/connect-modrewrite/versions

## README

connect-modrewrite [![Build Status](https://travis-ci.org/tinganho/connect-modrewrite.png)](https://travis-ci.org/tinganho/connect-modrewrite)
========================

[![NPM](https://nodei.co/npm/connect-modrewrite.png?downloads=true&stars=true)](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

---
_Source: https://npm.io/package/connect-modrewrite · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
