mod_rewrite导致$ _POST无法访问PHP

Firstly, here is my .htaccess:

RewriteEngine On
Options FollowSymLinks

# check if url ends in a slash and if it does redirect to same url without one
RewriteCond %{REQUEST_URI} !-d 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^/]+/)*([^/.]+))/\ HTTP/
RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]

# extionless url rewrite for urls in form example.com/cmd
RewriteRule ^([^/.]+)$ index.php?cmd=$1 [L,QSA]

# extionless url rewrite for urls in form example.com/cmd/action
RewriteRule ^([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2 [L,QSA]

# extionless url rewrite for urls in form example.com/cmd/ajax
RewriteRule ^([^/]+)/([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2&ajax=$3 [L,QSA]

So this works for url rewriting fine. But when I look in Firebug at my request after submitting a form to PHP it is status 303 Move Permanently. I'm fairly certain the problem is this line:

RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]

But I don't know how to fix it. I want to keep the mod_rewrite doing exactly what it is doing functionality wise, but I need this problem fixed.

Thanks for the help!

EDIT: I also want to mention, that if I send data from JavaScript to PHP using jquery .ajax and have type to post, it does work. And also, $_GET works no matter what. Just $_POST not working when sent from HTML to PHP.

You're forcing a client-side redirect, which means the browser will request the specified new page via a GET - that's where your form data is being lost. POST data is not preserved over a redirect, since the new page is not being loaded via POST.