Moin,
Ok, vielleicht habe ich mich etwas unklar ausgedrückt ... war spät gestern. Also noch mal in Kurzform: Momentan hat eine Webseite "langweilige" URIs (die z.B. aus DB-Abfragen herrühren, in der Form /seitexy.php?cat=2&id=99). Die URI soll in etwas Sinnvolles geändert werden (interessant/toll-zu-merken). Das dahinter stehende Skript soll dabei unverändert bleiben. Gleichzeitig möchte ich dem googleBot und allen anderen Nutzern, die sich bis dato /seitexy.php?cat=2&id=99 gemerkt haben, auf die Umstellung per 301 hinweisen. Im Normalfall wird vom Browser dann die neue URI aufgerufen.
Wieso gibst Du ÜBERHAUPT den Statuscode 301? Ich würde jetzt mal denken und behaupten, so eine "Verschönerung" der URL soll nur eine hübschere "Fassade" nach außen zeigen - und intern ganz normal weiterlaufen. Wieso willst Du also die "unschönen", echten URLs dem Browser bekanntgeben und ihn darauf verweisen (301 = "Neenee, das findest Du nicht mehr hier - such mal dort!")?
In sofern - genau, nur "Fassade" nach außen. Die "unschönen" sollen gerade nicht im Browser stehen. Ich habe dafür natürlich 2 separate Rewrite-Regeln:
Regel 1: seitexy.php?cat=2&id=99 -> interessant/toll-zu-merken [R=301]
Regel 2: interessant/toll-zu-merken -> neu/seitexy.php?cat=2&id=99 [L]
Um eine Endlosschleife zu vermeiden, habe ich die vorhandenen Skripte in einen Ordner "neu" verschoben ...
Die Fehlermeldung lautet: "File does not exist" und dann kommt der (absolute) Pfad zu der aufgerufenen Datei, also lokal z.B.: D:/html/tolle-projekte/interessant/toll-zu-merken
Klar. Die gibt's ja auch nicht.
Natürlich nicht. Aber wieso sucht er hier auf einmal mit dem absoluten Pfad? Würde er (der Server) weiterhin ab "/" suchen, würde er die Seite ja finden. Daher habe ich es mit absolutem Pfad rechts versucht, also http://www.domain.test/neu/seitexy.php?cat=2&id=99 und bekommen dann die "alte" URI im Browser angezeigt ...
Der Browser fordet "/interessant/toll-zu-merken" an. Der Webserver antwortet "301 - Du findest das jetzt unter: /pfad-zu-allen-seiten/langweilig.php" (Ist das wirklich das, was Du willst?), schreibt aber natürlich trotzdem einen Fehler, weil er die angeforderte Ressource nicht finden kann. Anschließend versucht der Browser es unter "/pfad-zu-allen-seiten/langweilig.php", wird prompt bedient und ist glücklich.
s.o. Liegt das ganze vielleicht etwa daran, dass ich in meiner Testumgebung mit virtuellem Host arbeite?! D.h. ich rufe tatsächlich http://www.domain.*test*/ auf, um zu meinem Projekt zu kommen.
Vielen Dank für die lange Antwort & Grüße,
luti