Asp.Net MVC Routing - как мне сопоставить весь URL?

Я пытаюсь создать универсальный маршрут для отслеживания того, когда в URL-адресе есть строка аффилированного лица. Аффилированный код помеченx с последующимintи будет отображаться только в конце URL-адреса (но перед строкой запроса).

Идея состоит в том, что я извлеку партнерский ID, выполнил бы регистрацию, затем сделал бы 301 по тому же запросу без партнерского ID.

Например:

http://www.domain.com/x32
http://www.domain.com/x32/
http://www.domain.com/path/to/something/x32
http://www.domain.com/x32?query=string
http://www.domain.com/x32/?query=string
http://www.domain.com/path/to/something/x32?query=string
http://www.domain.com/path/to/something/x32/?query=string

У меня есть этот маршрут

routes.Add(new Route("{url}/x{affiliateExternalId}", new MvcRouteHandler())
{
     Defaults = new RouteValueDictionary(
      new { controller = "Home", action = "LogCookieAndRedirect" }
     ),
     Constraints = new RouteValueDictionary(new { affiliateExternalId = @"\d{1,6}" })
});

Который только соответствует

http://www.domain.com/path/x32
http://www.domain.com/path/x32/

Что мне нужно сделать, чтобы сопоставить все и передать строку запроса в контроллер? Существует* оператор, которого я подозреваю, я должен использовать, но я не могу заставить его делать то, что мне нужно.

Ответы на вопрос(3)

Ваш ответ на вопрос