Tach!
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.
Im Sinne der exakten Formulierung der Beschreibung von regulären Ausdrücken hast du recht. Wenn man aber mal davon ausgeht, was der OP zu erreichen versucht, finde ich meine Formulierung nicht ganz verkehrt. Er hat da ein .html und das will er im Ergebnis nicht haben, also wird es durch die Klammern der Gruppierung aus ihr ausgeschlossen - also aus der Gruppierung, nicht aus dem gesamten Ausdruck.
Das Muster passt auf ".html" wie auch auf ".html.html".
Ist vermutlich kein Beinbruch. Da kommen sowieso jede Menge Requests mit anderen Fehlern und unerwünschten Zugriffsversuchen. Die kann man nicht alle in der Regel ausschließen, das muss dann in der auswertenden Routine abgefangen und zu einem 404 geleitet werden. Dass davon keine selbst generierten Links betroffen sind, muss der OP ausreichend selbst testen.
dedlfix.