Project

redirectly

0.0
The project is in a healthy, maintained state
Redirect server with dynamic URL and hostname support
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 2.1
>= 1.1, < 4
>= 5.3, < 7
~> 3.0
 Project Readme

Redirectly - Redirect server with dynamic URL and hostname support

Gem Version Build Status Maintainability


Redirectly is a simple URL redirect server that uses a simple INI file for defining dynamic redirects.


Install

$ gem install redirectly

Docker Image

Redirectly is also available as a docker image:

# Pull the image
$ docker pull dannyben/redirectly

# Run the redirectly command line
$ docker run --rm -it dannyben/redirectly --help

# Start the server with your local configuration file
$ docker run --rm -it \
    -p 3000:3000 \
    -v $PWD/redirects.ini:/app/redirects.ini \
    dannyben/redirectly 

Using with docker-compose

# docker-compose.yml
services:
  redirectly:
    image: dannyben/redirectly
    ports:
      - 3000:3000
    volumes:
      - ./redirects.ini:/app/redirects.ini

Using as an alias

$ alias redirectly='docker run --rm -it -p 3000:3000 -v $PWD/redirects.ini:/app/redirects.ini dannyben/redirectly'

Quick Start

# In an empty directory, create a sample configuration file
$ redirectly --init

# Start the server
$ redirectly

# In another terminal, access the server using one of the configured rules
$ curl -v something.localhost:3000

You should receive a redirect header:

# ...
< HTTP/1.1 302 Found
< Location: http://it-works.com/something
# ...

Usage

Redirectly requires a simple INI file with redirect configuration details.

You can create a sample configuration file by running:

$ redirectly --init

This will create a sample redirects.ini file:

example.com = https://other-site.com/
*.mygoogle.com/:anything = https://google.com/?q=%{anything}
example.org/* = https://other-site.com/
*.old-site.com = !https://permanent.redirect.com
:sub.app.localhost/* = http://it-works.com/%{sub}
proxy.localhost/*rest = @https://proxy.target.com/base/*rest
internal.localhost/reload = :reload
(*)old-domain.com/*rest = http://new-domain.com/%{rest}

For additional server options, see:

$ redirectly --help

The configuration file is built of pattern = target pairs, where:

  • pattern - is any URL pattern that is supported by Mustermann.
  • target - is the target URL to redirect to.

Special INI Notation

Redirect type

If the target starts with !, a permanent redirect (301) will be performed.
If it does not, a temporary redirect (302) will be performed by default:

test.localhost/temporary = http://example.com
test.localhost/permanent = !http://example.com

Proxying

If the target starts with @, the content will be proxied instead of being redirected:

test.localhost = @http://example.com

Named arguments

Patterns that include strings starting with a colon : will expose those strings as Ruby substitution variables in the target:

test.localhost/:anything = http://example.com/path/%{anything}

Splats

You can use a splat * or a named splat *name in the pattern.
Named splats will also be exposed as Ruby substitution variables in the target:

(*)test.localhost/*rest = http://example.com/%{rest}

Contributing / Support

If you experience any issue, have a question or a suggestion, or if you wish to contribute, feel free to open an issue.