rewrite rules hierarchical

When WordPress parses the incoming requests, it has no way of differentiating between what might be a product and what might be a subcategory. One will take precedence – it will either always look for a matching subcategory or it will always look for a matching product, depending on the order in which it processes the rules.