RewriteRule ^([^/]*).html$ /index.php?cid=$1 [L]
^ und $ bedeuten, dass du den kompletten Pfad betrachtet haben möchtest. Dann kommt eine Gruppierung, die das .html ausschließt.
Mit ^ und $ als "kompletten Pfad" kann ich mich ja noch anfreunden (besser: ^ steht für den Anfang des zu vergleichenden Textes, $ für das Ende), aber die folgende Gruppierung schließt .html nicht aus, das ist falsch beschrieben.
Die Gruppierung, das, was da in runden Klammern steht, umfasst eine beliebige Anzahl, auch keines, () von Zeichen ([]) mit Ausnahme (^) des Schrägstrichs (zusammen: [^/]).
Danach folgt der Text .html, der vorhanden sein muss, und zwar am Ende des Textes ($).
Das Muster passt auf ".html" wie auch auf ".html.html".