Huh. You're using mod_rewrite syntax with a mod_alias directive. Usually I see the opposite.
Redirect /foo www.siteurl.com/bar.html
But when I try to access www.siteurl.com/foo it brings up the URL www.siteurl.com/bar.html?q=foo which shows my initial page /foo and not my redirected page.
I don't understand what you are saying here. If you request /foo and instead end up at /bar then you
are getting redirected. But where's the query string coming from?
RewriteBase, if needed, has to go before all your rewrites. Here it is not needed because / is the default.
The form
Redirect /foo www.siteurl.com/bar.html
means: take any request containing the element /foo, replace it with www.example.com/bar.html,
reappend anything that came after /foo, and issue a 302 Redirect to this new URL. This is one of several important differences between mod_alias and mod_rewrite.
But this need not concern you, because you are going to dump that Redirect and replace it with a RewriteRule. It will look like this:
RewriteRule {pattern here} http://www.example.com/{target here} [R=301,L]
The QSA flag is only necessary when you have added a query but still want to keep the old one. This is not common.
RewriteRule ^(.*)$ SITEURL/$1 R=301,L]
Can we stipulate that you've got a glaring typo in there? :) But again it doesn't matter, because you are also going to dump the "SITEURL".