I found a solution. 
First I had to inherit from DefaultHttpControllerSelector. Deriving this class allow you to customize the controller selection. In my case, it was that simple.
public class CustomControllerSelector : DefaultHttpControllerSelector
{
    private HttpConfiguration _config;
    public IHttpControllerSelector PreviousSelector { get; set; }
    public CustomControllerSelector(HttpConfiguration configuration):base(configuration)
    {
        _config = configuration;
    }
    public override HttpControllerDescriptor SelectController(HttpRequestMessage request)
    {
        var uriSegments = request.RequestUri.Segments;
        var system = uriSegments[2];
        request.RequestUri = new System.Uri(request.RequestUri.AbsoluteUri.Replace(system, ""));
        var controllerDescriptor = PreviousSelector.SelectController(request);
        return controllerDescriptor;
    }
}
Than I had to replace the default one with my customization. But I saved the previous one because I used it after the url  manipulation.
var previousSelector = config.Services.GetService(typeof(IHttpControllerSelector)) as IHttpControllerSelector;
config.Services.Replace(typeof(IHttpControllerSelector), new CustomControllerSelector(config) { PreviousSelector = previousSelector});
This was my reference.
ASP.NET Web API custom IHttpControllerSelector for a single route