2017-12-22 7 views
0

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.comRedirectMatch 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] 

Antwort

0

sollten Sie RewriteCond verwenden mit /home/~ wenn der URI-Präfix zu testen, und verwenden Sie RewriteRule die URL neu zu schreiben und eine dauerhafte Umleitung zu machen.

RewriteEngine On 
RewriteBase/
RewriteRule ^~(.*) /home/~$1 [R=301,L] 

RewriteCond %{REQUEST_URI} !^/home/~ 
RewriteRule ^(.*) http://newdomain.com/$1 [R=301,L] 

Zeile 3: wenn URI-Präfix mit ~{any_characters}, den URI zu /home/~{any_characters} umschreiben, Redirect permanent

Zeile 5: Prüfe, ob die URI mit /home/~{any_characters}

Linie Präfix nicht 6: Dann die Neuschreibprozesses Regel, schreibe den URI von {any_characters} nach http://newdomain.com/{any_characters} um, umleitung permanent

+0

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. –

+0

Wo haben Sie die .htaccess-Datei abgelegt? ist es Stammordner? – Ben

+0

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. –