RewriteRule
не может видеть строки запроса (?
и что-либо после него) с левой стороны; он соответствует только части пути URL.
Но хорошая новость в том, что все, что вам, вероятно, нужно сделать, это:
RewriteEngine on
RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1 [QSA]
Опция QSA
, Query String Add, указывает вашему RewriteRule добавить в строку запроса вместо ее замены (поведение по умолчанию, которое, несомненно, вызвало всю проблему).