Para seus três exemplos, eles funcionarão:
RewriteRule ^$ index.html?page=home [QSA,L]
RewriteRule ^about$ index.html?page=about [QSA,L]
RewriteRule ^contact$ index.html?page=contact [QSA,L]
O truque é o sinalizador "QSA".
edit: uma solução um pouco mais geral, baseada em como o Drupal faz isso:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html?page=$1 [L,QSA]
O! -f é importante, porque senão você não poderia servir imagens ou o próprio index.html. A linha! -D pode ser descartada, dependendo do que, exatamente, você está fazendo. Uma abordagem ligeiramente diferente pode ser:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.html?page=$1 [L,QSA]
que pegaria / foo e / bar, mas não / foo /, / bar /, ou / foo / bar.