diff --git a/middleware/rewrite.go b/middleware/rewrite.go deleted file mode 100644 index 3c180861d..000000000 --- a/middleware/rewrite.go +++ /dev/null @@ -1,44 +0,0 @@ -package middleware - -import "net/http" - -// Rewrite is middleware for rewriting requests internally to -// a different path. -func Rewrite(p parser) Middleware { - - // Rewrite describes an internal location rewrite rule. - type rewrite struct { - From string - To string - } - - var rewrites []rewrite - - for p.Next() { - var rule rewrite - - if !p.NextArg() { - return p.ArgErr() - } - rule.From = p.Val() - - if !p.NextArg() { - return p.ArgErr() - } - rule.To = p.Val() - - rewrites = append(rewrites, rule) - } - - return func(next http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - for _, rule := range rewrites { - if r.URL.Path == rule.From { - r.URL.Path = rule.To - break - } - } - next(w, r) - } - } -} diff --git a/middleware/rewrite/rewrite.go b/middleware/rewrite/rewrite.go new file mode 100644 index 000000000..31e9395eb --- /dev/null +++ b/middleware/rewrite/rewrite.go @@ -0,0 +1,48 @@ +// Package rewrite is middleware for rewriting requests internally to +// a different path. +package rewrite + +import ( + "net/http" + + "github.com/mholt/caddy/middleware" +) + +// New instantiates a new rewrite middleware. +func New(c middleware.Controller) (middleware.Middleware, error) { + var rewrites []rewrite + + for c.Next() { + var rule rewrite + + if !c.NextArg() { + return nil, c.ArgErr() + } + rule.From = c.Val() + + if !c.NextArg() { + return nil, c.ArgErr() + } + rule.To = c.Val() + + rewrites = append(rewrites, rule) + } + + return func(next http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + for _, rule := range rewrites { + if r.URL.Path == rule.From { + r.URL.Path = rule.To + break + } + } + next(w, r) + } + }, nil +} + +// rewrite describes an internal location rewrite rule. +type rewrite struct { + From string + To string +}