Yes, you need to use a RewriteCond before the redirect. It should test THE_REQUEST and the pattern should match the URL that was requested when the request has to be further redirected (that's redirected, not rewritten). The pattern will match the literal "GET /requestedpath HTTP/1.1" request. Do not test REQUEST_URI. This pointer is altered by internal rewrites. Instead, test THE_REQUEST. There are many examples of this code in previous threads in this forum, some only days ago.
It would not be "insane to change the links". It is REQUIRED that you change the links. URLs are defined in links and searchengines take a dim view of sites where clicking a link in the internal navigation leads to a redirect instead of content. These flip the "low technical quality" alert.
You also need the [L] flag on every rule.