summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_httpd_db.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couchdb/couch_httpd_db.erl')
-rw-r--r--src/couchdb/couch_httpd_db.erl7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl
index cdebb1e3..fc13622d 100644
--- a/src/couchdb/couch_httpd_db.erl
+++ b/src/couchdb/couch_httpd_db.erl
@@ -256,9 +256,10 @@ db_req(#httpd{path_parts=[_,<<"_admins">>]}=Req, _Db) ->
% Special case to enable using an unencoded slash in the URL of design docs,
% as slashes in document IDs must otherwise be URL encoded.
db_req(#httpd{method='GET',mochi_req=MochiReq, path_parts=[DbName,<<"_design/",_/binary>>|_]}=Req, _Db) ->
- PathFront = "/" ++ binary_to_list(DbName) ++ "/_design",
- {ok, [PathFront|PathTail]} = regexp:split(MochiReq:get(raw_path),"%2F"),
- RedirectTo = PathFront ++ "/" ++ mochiweb_util:join(PathTail, "%2F"),
+ PathFront = "/" ++ couch_httpd:quote(binary_to_list(DbName)) ++ "/",
+ RawSplit = regexp:split(MochiReq:get(raw_path),"_design%2F"),
+ {ok, [PathFront|PathTail]} = RawSplit,
+ RedirectTo = PathFront ++ "_design/" ++ mochiweb_util:join(PathTail, "%2F"),
couch_httpd:send_response(Req, 301, [{"Location", RedirectTo}], <<>>);
db_req(#httpd{path_parts=[_DbName,<<"_design">>,Name]}=Req, Db) ->