Hi!
das betrifft übrigens auch http://forum.de.selfhtml.org/?gedoens=hallo .Wenn jemand dann diese Seite irgendwo verlinkt wird sie sie auch irgendwann gelistet.
Das ist ein nicht allein von dir lösbares Problem, denn die Falschverlinker müssen diese Verlinkung korrigieren. Du kannst zwar mit 404 reagieren, und den Suchmaschinen den Link ausreden, aber irgendwann kommen sie wieder am falschen Link vorbei und dann musst du wieder mit 404 antworten.
Dass jemand beliebige Teile an einen Querstring anhängen kann, lässt sich nicht verhindern. Deine Reaktion darauf kannst du aber beinflussen.
Du kannst einerseits auf die Auswertung der Parameter verzichten oder es geht technisch nicht (statisches Dokument). Dann kannst du auch nicht mit 404 antworten, wenn eine Seite prinzipiell gefunden wird, und sei es wie in deinem Fall das DirectoryIndex-Dokument.
Du kannst alle Parameter auswerten und bei unerwarteten einen 404 werfen. Das verhindert aber auch das Bearbeiten der restlichen Parameter. (Es verhindert es nicht, aber es wäre unsinnig, 404 zu antworten und trotzdem zu arbeiten.)
Oder du gehst den Mittelweg und wertest nur das Erwartete aus, ignorierst den Rest, was aber dann die Suchmaschinen auch als erfolgreiche Verarbeitung ansehen.
Vielleicht ist es aber so, dass du nur ein statisches DirectoryIndex-Dokument ausgeben willst und überhaupt keinen Querystring erwartest. Dann, wie gesagt, stelle ich mir vor, dass man das mit einer RewriteRule/RewriteCond auf ein nicht existentes Dokument umschreiben kann, woraufhin der Apache den 404 wirft. Direkt einen Statuscode kann man nur bei Redirects angeben sowie 403 und 410 mit den Flags F(orbidden) und G(one).
Ungetestet:
RewriteCond %{QUERY_STRING} !=""
RewriteRule .* gibsnich
Lo!