···13131414 let remap config f =
1515 let l = String.concat "/" f in
1616- try
1717- let prefix, replacement =
1818- List.find
1919- (fun (prefix, _replacement) ->
2020- Astring.String.is_prefix ~affix:prefix l)
2121- (Config.remap config)
2222- in
2323- let len = String.length prefix in
2424- let l = String.sub l len (String.length l - len) in
2525- Some (replacement ^ l)
2626- with Not_found -> None
1616+ let remaps =
1717+ List.filter
1818+ (fun (prefix, _replacement) -> Astring.String.is_prefix ~affix:prefix l)
1919+ (Config.remap config)
2020+ in
2121+ let remaps =
2222+ List.sort
2323+ (fun (a, _) (b, _) -> compare (String.length b) (String.length a))
2424+ remaps
2525+ in
2626+ match remaps with
2727+ | [] -> None
2828+ | (prefix, replacement) :: _ ->
2929+ let len = String.length prefix in
3030+ let l = String.sub l len (String.length l - len) in
3131+ Some (replacement ^ l)
27322833 let get_dir_and_file ~config url =
2934 let l = Url.Path.to_list url in