Ich habe eine Website, die ursprünglich mit klassischem ASP erstellt wurde. Vor ungefähr einem Jahr wurde es in PHP umgeschrieben. Dies führte dazu, dass sich die Dateierweiterungen änderten und einige Seiten an neue Speicherorte auf der Website verschoben wurden. Natürlich haben wir 301 Weiterleitungen von den alten URLs zu den neuen URLs vorgenommen, damit ihre Benutzer und Suchmaschinen ihre neuen Standorte finden können. Das funktioniert gut.
Wir haben ihnen auch ein Tool erstellt, mit dem der Websitebesitzer eigene winzige URLs erstellen kann, die auf eine Seite mit in der URL enthaltenen Google Analytics-Kampagnenverfolgungsvariablen umleiten, damit er die Kampagne verfolgen und deren Leistung sehen kann.
Das Problem, das ich habe, ist, dass die Kampagnenverfolgungsregeln mit den 301-Weiterleitungen in Konflikt stehen und verhindern, dass die Weiterleitungen überhaupt funktionieren.
Hier ist der Kampagnen-Tracking-Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Wie Sie sehen, wird überprüft, ob eine Datei vorhanden ist, und wenn dies nicht der Fall ist, wird sie zu einem Tracking-Skript (tracking.php) umgeleitet, das dann den Tracking-Code verwendet und mit dem Google Analytics-Kampagnencode in der Abfrage zur richtigen URL umleitet Zeichenfolge.
Dieser Code führt dazu, dass Regeln wie diese fehlschlagen:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Es ist sinnvoll, dass dies nicht zusammenarbeitet, da die Tracking-Regeln besagen: "Wenn eine Datei nicht gefunden wird, leiten Sie sie zu tracking.php weiter." Was ich brauche, ist, dass die 301-Weiterleitungen zuerst ausgeführt werden. Wenn keine von ihnen übereinstimmt, leiten Sie zum Tracking-Skript weiter. Durch Platzieren der Verfolgungsregeln unter den 301-Weiterleitungen werden die Ergebnisse nicht geändert.
Kann dies über .htaccess erfolgen? Oder muss ich das Tracking-Skript so ändern, dass, wenn eine Kampagne nicht gefunden wird, überprüft wird, ob die Kampagnen-ID tatsächlich eine alte Seite ist, die umgeleitet werden muss, und dann die 301-Umleitung von dort aus durchgeführt wird?
[R=301,L]
Problem nicht nach jeder Weiterleitung auftritt. Lassen Sie mich das versuchen und ich werde Sie wissen lassen, was passiert.*.asp -> *.php
Platzhalter funktioniert hervorragend. Die einzelnen Regeln für die Seiten, die keinen direkten Übergang darstellen und Abfragezeichenfolgen enthalten, sind problematisch. Dies scheint jedoch der richtige Weg zu sein. Wenn ich diesen Teil nicht klären kann, werde ich eine neue Frage dazu stellen.Ich würde die Weiterleitung umkehren und sie so lassen, wie sie ursprünglich war. Leiten Sie Ihre NEUE Site auf Ihre ALTE Site um. Ihre ALTE Website profitiert wahrscheinlich bereits von Backlinking, Alter der Website und SEO. Es wäre eine Schande, das zu verlieren, nur um es durch eine neuere Site mit einem niedrigeren Seitenrang zu ersetzen. Google bestraft Weiterleitungen. Ihre NEUE Site hat noch keine SEO, daher ist es besser, eine Weiterleitung für diese zu verwenden :)
quelle