First thing is to change the code in the following ways:
Every rule needs the
Every redirect should include the protocol and hostname in the rule target.
Rules that rewrite (rather than redirect) must not include the protocol and hostname in the rule target, just the path and file.
List all of the rules that redirect before the rules that rewrite.
Put all of the rules in the root htaccess, modifying the RegEx pattern to include the full path when you move a rule from the htaccess file in a folder, i.e. pattern like
Slashes in patterns do not need to be escaped.
List the redirects in order from "most specific" to "most general".
Add a blank line after every
RewriteRule to make the code more readable.
Once we've got those out of the way, we can look deeper.