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?