Ich brauche Hilfe und zwar schnell.
Wir haben vor Kurzem eine Subdomäne migriert, um sie in die Domäne zu integrieren.
Z. B. https://blog.example.com
zuhttps://www.example.com/blog
https://blog.example.com
hat eine Menge Verkehr, den wir nicht verlieren wollen. Also müssen wir 301-Weiterleitungen machen.
Das Problem besteht darin, dass https://blog.example.com
es über 200 Seiten gibt, die eine gute Leistung aufweisen.
Ich brauche Ratschläge, wie wir alle Seiten auf die entsprechenden Seiten am neuen Standort umleiten können, ohne die Website zu verlangsamen oder den Server zu überlasten.
Wir haben es versucht
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]
Aber nur die Startseite wurde umgeleitet
Müssen wir jede dieser Seiten einzeln umleiten?
Antwort1
Wir haben es versucht
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.com [NC] RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]
Sie sagten, Sie hätten „kürzlich eine Subdomäne migriert“, der von Ihnen gepostete Code zielt jedoch nicht auf eine Subdomäne ab und steht im Konflikt mit den Beispiel-Hostnamen, die Sie in der Frage beschrieben haben?
Dadurch wird "nur die Startseite" umgeleitet, wenn Sie sie an der falschen Stelle in der .htaccess
Datei platziert haben. Wenn Sie sie beispielsweise platziert habennacheine interne Umschreibung in einen Front-Controller. Diese Umleitung müsste ganz oben in Ihrer Stammdatei erfolgen .htaccess
.
ohne die Website zu verlangsamen oder den Server zu überlasten.
200 identische URL-Weiterleitungen sind in Bezug auf Leistung/Overhead unbedeutend. Um jedoch alle Auswirkungen dieser Weiterleitungen vollständig zu minimieren, blog
sollte die Subdomäne auf einen anderen Bereich des Dateisystems verweisen, was die Weiterleitung weiter vereinfacht. (Tatsächlich müssen Sie die Subdomäne nicht auf ein bestimmtes Verzeichnis verweisen lassen, sondern können die Weiterleitung direkt in der Serverkonfiguration/im virtuellen Host durchführen, nicht .htaccess
.)
Redirect
Ihre „200 Weiterleitungen“ können dann mit einer einzigen mod_alias- Direktive (in .htaccess
oder im Container) ausgeführt werden <VirtualHost>
. Beispiel:
Redirect 301 / https://www.example.com/blog/
Die Redirect
Direktive ist präfixübereinstimmend und alles nach der Übereinstimmung wird an das Ende der Ziel-URL kopiert. So http(s)://blog.example.com/anything
wird beispielsweise per 301 an umgeleitet https://www.example.com/blog/anything
.
Andernfalls, wenn Ihre Subdomain und Hauptdomain auf die gleiche Stelle im Dateisystem zeigen, verwenden Sie mod_rewrite, um den angeforderten Hostnamen zu überprüfen, ähnlich wie Sie es anfangs getan haben (obwohl ich nicht sicher bin, warum Sie nachexample.com
oder www.example.com
wenn Sie nach der Subdomäne hätten suchen sollen blog.example.com
).
Zum Beispiel bei derganz obender Stammdatei .htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
Das NC
Flag ist überflüssig, da der reguläre Ausdruck .*
bereits auf alles zutrifft.
Oder verwenden Sie REQUEST_URI
stattdessen die Servervariable in der RewriteRule
Direktive und vermeiden Sie die Rückreferenz. Beispiel:
:
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
Die REQUEST_URI
Servervariable enthält bereits das Schrägstrichpräfix.
Testen Sie zunächst mit einer 302-Weiterleitung (vorübergehend), um mögliche Cache-Probleme zu vermeiden. Und stellen Sie sicher, dass Sie den Cache Ihres Browsers vor dem Test geleert haben.