On Sun, Jan 24, 2010 at 11:00 AM, Benoit Chesneau <bchesn...@gmail.com> wrote:
> Hi,
>
> Folloging suggestion of @jchris I revisited my rewrite handler. This
> time instead of using a javascript function to handle rewriting it
> uses pattern matching in Erlang to do it. The rewriting root is the
> the design doc :
>
> /yourdb/_design/ddocname/_rewrite/....
>
> ddocname should contain a "rewrites" member which a list of rewriting
> rules. If not it will return a 404.
>
> ex :
>
> {
>    ....
>    "rewrite": [
>        {
>            "from": "",
>            "to": "index.html",
>            "method": "GET",
>            "query": {}
>        }
>    ]
> }
>
> Urls are relatives to the db if they start by / or to the current path.
>
> Rewriting can use variables. Variables in path are prefixed by ":".
> For example the following rule:
>
> { "from": "show/:id", "to": "_show/mydoc/:id" }
>
> will rewrite
>          "/mydb/_design/test/_rewrite/show/someid" to
> "/mydb/_design/test/_rewrite/_show/someid".
>

do you mean?

"/mydb/_design/test/_show/someid"

> or { "from": "view/:type", "to": "_list/types/by_types", query: {
> "key": "type" }
> will rewrite :
>
>          "/mydb/_design/test/_rewrite/view/sometype" to
> "/mydb/_design/test/_rewrite/_list/types/by_types?key=sometype".
>

do you mean?

"/mydb/_design/test/_list/types/by_types?key=sometype"

> So paths and query args can be rewrittend dynamically. The code is
> currently in my github repo :
>
>     http://github.com/benoitc/couchdb/commits/rewrite2
> (couch_httpd_rewrite.erl) .
>
> There is also some unitests :
>
>    
> http://github.com/benoitc/couchdb/blob/rewrite2/share/www/script/test/rewrite.js
>
> Let me know what do you think about it.
>
> - benoît
>

Thanks for writing this! I'll look in more detail soon. What does
everyone else think about including this?

Chris

-- 
Chris Anderson
http://jchrisa.net
http://couch.io

Reply via email to