J'ai un site Web qui a été initialement construit en utilisant ASP classique. Il y a environ un an, il a été réécrit en PHP. Cela a entraîné la modification des extensions de fichier et certaines pages ont été déplacées vers de nouveaux emplacements dans le site Web. Naturellement, nous avons effectué 301 redirections des anciennes URL vers les nouvelles URL afin que leurs utilisateurs et moteurs de recherche puissent trouver leurs nouveaux emplacements. Cela fonctionne bien.
Nous leur avons également créé un outil qui permet au propriétaire du site de créer ses propres URL minuscules qui seront redirigées vers une page avec des variables de suivi de campagne Google Analytics incluses dans l'URL afin qu'il puisse suivre la campagne et voir comment elle fonctionne.
Le problème que j'ai est que les règles de suivi des campagnes sont en conflit avec les redirections 301 et empêchent les redirections de fonctionner du tout.
Voici le code de suivi de la campagne:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Comme vous pouvez le voir, il vérifie si un fichier existe et s'il ne le fait pas, il redirige vers un script de suivi (tracking.php) qui prend ensuite le code de suivi et redirige vers l'URL appropriée avec le code de campagne Google Analytics dans la requête chaîne.
Ce code provoque l'échec de règles comme celle-ci:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Il est logique que cela ne fonctionne pas ensemble comme le disent les règles de suivi, "si un fichier n'est pas redirigé vers tracking.php". Ce dont j'ai besoin, c'est que les redirections 301 s'exécutent en premier, et si aucune ne correspond, puis redirigez vers le script de suivi. Placer les règles de suivi sous les redirections 301 ne change pas les résultats.
Peut-on le faire via .htaccess? Ou devrais-je modifier le script de suivi afin que si une campagne n'est pas trouvée, il vérifie si l'ID de la campagne est en fait une ancienne page qui doit être redirigée, puis effectue la redirection 301 à partir de là?