meineseite.de/?p=3
meineseite.de/?p=4
etc.
[...]
Alle diese alten urls führen jetzt auf die Startseite, es wird also immer die gleiche Seite aufgerufen. Ich glaube, daß könnte ein Problem werden wegen doppeltem Content. Ich möchte nun einen 404 error ausgeben für alle anfragen mit einem /?p=irgendwas.
Kann mir jemand auf die schnelle den rewrite befehl für die htaccess sagen
Damit dir dann auch geholfen wird:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^p=
RewriteRule ^$ - [R=404,NS]
Die Verarbeitung läuft dann wie folgt: Die RegEx der RerwriteRule ^$ steht für einen leeren lokalen filepath, wie das der Fall ist, wenn die .htaccess-Datei genau dort liegt, wo vom filepath nichts mehr übrig bleibt (/var/www/htdocs/.htaccess, filename /var/www/htdocs/, es bleibt also nach Entfernen des Verzeichnisprefixes noch "" (leer) übrig). In einem zweiten Schritt wird die Bedingung geprüft, d.h. der QUERY_STRING muss mit p= beginnen. Sollte auch das wahr sein, wird die Substitution der RewriteRule angewandt, was hier so viel heißt wie „keine Ersetzung“. Schließlich wird der Statuscode 404 (direkt) ausgeliefert, d.h. eventuelle folgende Regeln werden in diesem Durchlauf nicht mehr geprüft. Andere Statuscodes als 3xx werden erst seit Version 2.1 unterstützt. Insofern solltest du deine verwendete Apache-Version vorher untersuchen. Subrquests können auch draußen bleiben (NS-Flag).
Natürlich wäre es auch im Falle einer Version vor 2.1 möglich auf /michgibtesnicht intern umzuschreiben, was im Ergebnis dann einen 404 produziert. Damit erzeugst du dann zwar ein wenig Processing, sofern du keine high-traffic Website betreibst (dann solltest du sowieso im Idealfall auf .htaccess-Dateien verzichten), sollte sich das nicht groß bemerkbar machen.