QSA stands for Query String Append, i.e., add the original $_GET to the new request.
A few more pointers:
Please get rid of <IfModule mod_rewrite.c> and </IfModule>, once you’ve established mod_rewrite works there is no need to ask the server over and over again for each and every request.
RewriteBase is hardly ever needed, just remove it. If the site happens to fall apart when you do (unlikely), put it back.
Just to make it more clear end the RewriteCond for the host with a $ so nothing can follow it, i.e.,
RewriteCond %{HTTP_HOST} ^(www\\.)?domain\\.com$
Exlude index.php from the last redirection, and then use .? instead of ^$ for the last RewriteRule
Enclose the match for first rule in ^ and $ so it only fires if the complete URL matches; what you have now will also fire on partial match, which is not what you’d want (probably)