Since quite a while it was not possible to use the Apache mod_rewrite to redirect POST resquests.
After the browser received a redirect response code 301(permanent) or 302(temporary) from a POST request it redirected the request to the new URL but using a GET method.
After research I found out that since some time the extra response status code 307 was doing the trick.
In fact it simply says to the browser to use the same request METHOD as the original one when receiving this redirect response code ‘307’ Temporary Redirect.
Here is the extract from:
307 Temporary Redirect (since HTTP/1.1)
In this case, the request should be repeated with another URI; however, future requests should still use the original URI. In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request. For instance, a POST request should be repeated using another POST request.
Note: The permanent Redirect code 308 is still experimental at the moment.
Example of a GET & POST rewrite rule:
RewriteRule /myuri http://www.example.com/myuri2 [R=307,L]