Vor kurzem haben wir unsere Website auf einen anderen Server verschoben, sagen http://newdomain.com
, während unsere alten Seite zu sagen ist http://olddomain.com
RedirectMatch in mod Rewrite
Ich mag würde die Benutzer-Verzeichnis auf der alten Seite halten zugänglich, wie es vorher war, das ist http://oldomain.com/~user
, aber alles, auf das unter dem Stammordner zugegriffen werden kann, verweist auf die neue Domäne. Das Benutzerverzeichnis auf dem alten Server befindet sich im Dateisystem /home/user
. Also schrieb ich folgende Regeln:
RedirectMatch permanent ^/~(.*) /home/~$1
RedirectMatch permanent ^/(.*) http://newdomain.com/$1
während die zweite Regel einwandfrei funktioniert, die erste noch will an den neuen Standort kartieren, wie folgend: http://newdomain.com/~user
.
Wie kann ich die beiden Regeln festlegen, so dass alles, was in /var/www/html
auf der alten Seite auf die neue Website umleitet, aber alles unter /home
umleiten nicht?
-
Hier ist der neue Code basiert auf Ben-Lösung, die die URLs für den Zugriff auf Nutzer-Seiten richtig zu Hause abbildet, aber der Browser beschwert und zeigt nicht ihre Websites. Die Umleitung der Stammordner-URL funktioniert einwandfrei.
RewriteEngine on
# RewriteBase/-- I had to comment this as the apache did not like it
Rewriterule ^/~(.*) /~$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/home/~
RewriteRule ^/(.*) http://newdomain.com/$1 [R=301,L]
Danke @Ben. Ich musste Änderungen an den von Ihnen bereitgestellten Änderungen vornehmen, da der Apache die RewriteBase/in meiner Standard-CONF-Datei nicht mochte. Bitte beachten Sie meinen aktualisierten Code basierend auf Ihrer Lösung in meiner Frage. Obwohl ich die URLs für die Benutzer Home-URL sehen können, bleiben Sie gleich, wie http://olddomain.com/~user, spuckt der Browser eine Fehlermeldung: Die Seite wird nicht ordnungsgemäß umgeleitet. Firefox hat festgestellt, dass der Server die Anfrage für diese Adresse auf eine Weise umleitet, die niemals abgeschlossen wird. –
Wo haben Sie die .htaccess-Datei abgelegt? ist es Stammordner? – Ben
Ich habe diese Regeln tatsächlich in die Standard-Konfigurationsdatei unter '/ etc/apache2/sites-enabled/000-default.conf' gesetzt. Ich hatte ein Problem mit der .htaccess-Datei, die nicht im Stammordner funktioniert. –