You shouldn't disavow anything unless you know that those links are causing ranking problems or penalties for your content. In most cases, Google already knows that those domains are spammy and completely ignores them. They won't hurt your site when your competitor redirects them towards you.
If you do need to disavow, it isn't clear if you can disavow the redirecting domain or if you need to disavow all the domains linking to the redirecting domain. It would certainly be easier to disavow the redirecting domains. Google's John Mueller weighed in on a similar question about redirects and disavow, but wasn't really able to answer it: https://www.youtube.com/watch?v=h0FC1K25Z3w&feature=share&t=28m34s I'd start with disavowing the redirecting domain and see if that improves the rankings or gets the penalty lifted.
.htaccess you can throw a
403 Forbidden error based on the referrer. See How do you block a referer but for a specific URL using .htaccess? Unfortunately, doing so isn't going to help much for two reasons:
- Googlebot never sends a
Referer header, so Googlebot won't know that you are trying to block the links.
- The redirecting domain doesn't always appear in the
Referer header. It only will for direct traffic to that domain. When somebody on Page A clicks on a link to the redirecting domain and gets sent to your site, Page A appears in the
Referer, not the redirecting domain.