Istio Matching Rules

Hey guys, if I declare a VS with matching conditions on headers & uri, those are both respected, right?

I ask because I have a scenario where I have some virtual services as declared below. I would expect that when curling to with curl -H “my-header: value-a” example.com/my-path, I would get routed to vsA, but with curl -H “my-header: value-b” -H “another-header: another-value-b” example.com/my-path I would expect to go to vsB. Is this not the case? In my testing it appears in both cases I get routed to vsA.

vsA

- match:
    - headers:
        my-header:
          exact: value-a
    - uri:
        prefix: /my-path
    route:
    - destination:
        host: service-a.default.svc.cluster.local
        subset: default

vsA

- match:
    - headers:
        another-header:
          exact: another-value-b
        my-header:
          exact: value-b
    - uri:
        prefix: /
    route:
    - destination:
        host: service-b.default.svc.cluster.local
        subset: default