• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 12 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Modrewrite middleware for connect/express

connect-modrewrite Build Status

NPM

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

Getting started

Install connect-modrewrite with:

npm install connect-modrewrite --save

Require it:

var modRewrite = require('connect-modrewrite');

An example configuration:

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

'^/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.

More Repositories

1

l10ns

Internationalization workflow and formatting
C++
234
star
2

node-accept-language

BCP47 language negotiation
TypeScript
85
star
3

express-request-language

A middleware to figure out a request's language tag by parsing Accept-Language header and stored cookies
JavaScript
62
star
4

SASS-Inspector

FireSASS for Chrome
JavaScript
23
star
5

grunt-dot-compiler

Compile doT templates for ready to use in node and client
JavaScript
19
star
6

haproxy-with-letsencrypt-auto-renewal

HAProxy with letsencrypt auto renewal
Shell
13
star
7

terminal-colors

Terminal colors made easy
JavaScript
7
star
8

jquery.formParams

jQuery plugin for serializing forms to JS objects
JavaScript
5
star
9

linux-kernel

imx6sl linux kernel source
C
4
star
10

heroku-typescript-buildpack

Buildpack for typescript.
Shell
2
star
11

express-autoroute

Loads your express routes automatically.
JavaScript
2
star
12

VirtualBox-Network-Interface-Settings

Settings for virtualbox to have Internet access and SSH access
2
star
13

titan

Java NIO websocket library using multithreaded epolling (WIP)
Java
2
star
14

JS-module-pattern-template

JavaScript
2
star
15

compass-retina-sprites

Automatic creation of both retina and regular sprites
Ruby
2
star
16

balanced-storage

Proposal for a balanced storage.
2
star
17

LYA

LYA - Localize Your Application
C++
1
star
18

slim

Slim is a new programming language for creating memory efficient applications.
C++
1
star
19

flashpoint

Microservice gateway with support for GraphQL
C++
1
star
20

CSS-Selector-Specificity

JavaScript
1
star
21

mantis

Framework for creating HTML5 based clients
JavaScript
1
star
22

jshint-globals

Use predefined jshint globals
1
star
23

css-pruner

Lists all of the unused CSS selectors
Ruby
1
star
24

selenium-circleci-bug

JavaScript
1
star
25

compass-placeholder

Style your input placeholders with ease
Ruby
1
star