Не проверено, но стоит попробовать:
RewriteRule .* /index.php?p={REQUEST_FILENAME} [R=301,L]
Часть ". *" Означает, что вы хотите сопоставить 1 или более символов (любой из них). И "/" перед "index.php", вероятно, не является обязательным, но проясняет ситуацию, даже если у вас уже установлена опция RewriteBase "/".
Вы также можете добавить параметр «QS» в скобки, чтобы быть уверенным, что получена строка запроса, которая может быть передана с запросами (это будет [QS, R = 301, L]). Надеюсь, что это работает, и это помогает:)
Редактировать: перед "{REQUEST_FILENAME}" также стоит "%", как утверждает Гамбо.