ACL doesn't work with multiple condition (beg_path AND

Wrong statement, you need to close your anonymous ACL with }, instead you have that at the end.

Use:

acl url_staging path_beg /123456
use_backend staging if { ssl_fc_sni staging.com } AND url_staging

acl url_production path_beg /789012
use_backend production if { ssl_fc_sni production.com } AND url_production

And since AND is implicit, you can just:

acl url_staging path_beg /123456
use_backend staging if { ssl_fc_sni staging.com } url_staging

acl url_production path_beg /789012
use_backend production if { ssl_fc_sni production.com } url_production