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.
- 

Reply via email to