Htaccess - URL rewrite - alte URLs auf neue leiten

Hallo!

Ich arbeite gerade an einer Seite, bei der ich URLs umschreibe, damit sie von dieser Form:www.domain.de/?kontaktformular
in diese form gebracht werden:www.domain.de/kontaktformular.html
Das ganze mache ich folgendermaßen:
RewriteRule ^(.+).html$ index.php?$1&%{QUERY_STRING}

Das Problem hierbei ist, dass alte URLs nun auf eine 404 Seite schicken.
Wie bekomme ich es hin, dass die alte url „?kontaktformular“ ebenfalls auf „kontaktformular.html“ leitet und auch als solche in der URL Leiste des Browsers angezeigt wird?
Vielen Dank und
mit freundlichem Gruß
Christoph

Erste Erfolge
Also nach ein wenig Rumprobieren und Suchen im Internet habe ich folgende Lösung finden können, die schon mal einen Teil des Problems beheben kann.
Hierbei werden einzelne Seiten umgeleitet, deren URL sich zudem geändert hat:

RewriteCond %{QUERY_STRING} ^Module$ [NC]
RewriteRule .* passende-module-markenqualitaet.html? [R=301,L,NC]

Dies kann ich für die wenigen URLs, die sich auf diese Weise geändert haben, einfach manuell der htaccess hinzufügen.

Jetzt möchte ich jedoch auch noch andere Seiten abfangen können.
Im Google Index gibt es viele Seiten, die folgendermaßen aufgebaut sind:
http://www.domain.de/?97938
oder auch
http://www.domain.de/?2344-2

Diese sollen folgendermaßen umgewandelt werden:
http://www.domain.de/97938.html
bzw.
http://www.domain.de/2344-2.html

Das kann doch nicht so schwer sein? Ich stell mich doch nur doof an - ich bin mir sicher, das ich der Lösung bereits ganz nah bin.

Vielen Dank und
mit freundlichem Gruß
Christoph

nennt sich QUERY_STRING was hinterm ? ist.

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule .* %1.html

Hey! Vielen Dank für deine Antwort!
Leider scheint da was nicht zu funktionieren. Folgendermaßen habe ich es jetzt versucht:

RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule .* $1.html

Leider bekomme ich jetzt bei allen URLs (auch bei denen, die vorher funktionierten) einen 403 Fehler.

Mit besten Grüßen
Christoph

Hallo ,

RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule .* $1.html

na ich dachte du guckst auch mal in die documenttion

wenn muss es %1 seinund nicht $1

das hier geht bei mir

RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9-]*)$
RewriteRule ^index.php /%1.html [L]

http://localhost/?ztuztu-1
wird zu
The requested URL /ztuztu-1.html was not found on this server.

Hey!

Danke für deine Antwort!
Leider wird das so nichts.
Ich werde die URLS einfach einzeln umleiten. Dynamisch scheint das hier grad nicht zu funktionieren.

Beste Grüße
Christoph