You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by Apache Wiki <wi...@apache.org> on 2018/04/09 17:36:04 UTC
[Couchdb Wiki] Update of "Rewriting_urls" by JoanTouzet
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.
The "Rewriting_urls" page has been changed by JoanTouzet:
https://wiki.apache.org/couchdb/Rewriting_urls?action=diff&rev1=16&rev2=17
Comment:
poof
<<Include(EditTheWiki)>>
- This is an overview of http rewrite handler.
+ See the [[http://docs.couchdb.org/en/latest/api/ddoc/rewrites.html|official documentation]] for this topic.
- See also the [[http://docs.couchdb.org/en/latest/configuring.html#http-rewrite-handler|official documentation]] for this topic.
-
- == The HTTP Rewrite Handler ==
-
- The http rewrite handler. All rewriting is done from
- /dbname/_design/ddocname/_rewrite by default.
-
- each rules should be in rewrites member of the design doc.
- Ex of a complete rule :
- {{{
-
- {
- ....
- "rewrites": [
- {
- "from": "",
- "to": "index.html",
- "method": "GET",
- "query": {}
- }
- ]
- }
-
-
- }}}
-
- * '''from''': is the path rule used to bind current uri to the rule. It use pattern matching for that.
- * '''to''': rule to rewrite an url. It can contain variables depending on binding variables discovered during pattern matching and query args (url args and from the query member.)
- * '''method''': method to bind the request method to the rule. by default "*"
- * '''query''': query args you want to define they can contain dynamic variable by binding the key to the bindings
-
- to and from are path with patterns. pattern can be string starting with ":" or
- "*". ex:
- /somepath/:var/*
-
- This path is converted in erlang list by splitting "/". Each var are
- converted in atom. "*" is converted to '*' atom. The pattern matching is done
- by splitting "/" in request url in a list of token. A string pattern will
- match equal token. The star atom ('*' in single quotes) will match any number
- of tokens, but may only be present as the last pathtern in a pathspec. If all
- tokens are matched and all pathterms are used, then the pathspec matches. It works
- like webmachine. Each identified token will be reused in to rule and in query
-
- The pattern matching is done by first matching the request method to a rule. by
- default all methods match a rule. (method is equal to "*" by default). Then
- It will try to match the path to one rule. If no rule match, then a 404 error
- is displayed.
-
- Once a rule is found we rewrite the request url using the "to" and
- "query" members. The identified token are matched to the rule and
- will replace var. if '*' is found in the rule it will contain the remaining
- part if it exists.
-
- Examples:
-
- || '''Rule''' || '''Url''' || '''Rewrite to''' || '''Tokens''' ||
- || {"from": "/a/b", "to": "/some/"} || /a/b?k=v || /some/k=v|| k = v ||
- || {"from": "/a/b", "to": "/some/:var"} || /a/b || /some/b?var=b || var = b ||
- || {"from": "/a", "to": "/some/*"}|| /a || /some || ||
- || {"from": "/a/*", "to": "/some/*} || /a/b/c || /some/b/c || ||
- || {"from": "/a", "to": "/some/*"} || /a || /some || ||
- || {"from": "/a/:foo/*","to": "/some/:foo/*|| /a/b/c || /some/b/c?foo=b || foo = b ||
- || {"from": "/a/:foo", "to": "/some", "query": { "k": ":foo" }} || /a/b || /some/?k=b&foo=b || foo =:= b ||
- || {"from": "/a", "to": "/some/:foo" } || /a?foo=b || /some/b&foo=b || foo = b ||
-
-
- Paths are relative to the design doc, so "/" mean the design doc too and "../" mean the path above the design doc and so on.
-