I believe that your use of the PassThrough flag is incorrect - I would have simply used [L].
Yes, include a test (RewriteCond) which specifies NOT id=blah then use your RewriteRule.
WARNING: [rant #1]
The use of "lazy regex," specifically the
atom, (.*), and its close relatives, is the NUMBER ONE coding error of newbies BECAUSE it is "greedy." Unless you provide an "exit" from your redirection, you will ALWAYS end up in a loop!
Moreover, it is the easiest way for hackers to gain access to your server. NEVER redirect an unverified $_GET variable like this!
You might benefit from reading the mod_rewrite tutorial linked in my signature as it contains explanations and sample code. It's helped may members and should help you, too.