Why do you want to rewrite the URI when you could just use the GET parameter passed in the query string? I get the feeling that your index.php file will have to parse that query string again at some point. Are you using a framework?
I haven't tested anything, but just a quick glance gets my regex senses tingling:
Your RewriteCond directive uses ^ and $; those match the beginning and end of a string. They don't make sense when you're trying to capture something in the middle.
Why are there parentheses around the .* in your RewriteRule? I take it your backreference $1 refers to the (.*) in the RewriteCond (which is a somewhat advanced feature -- nice job).