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à?
[R=301,L]
suite de chaque redirection est à l'origine de mon problème. Laissez-moi essayer et je vous ferai savoir ce qui se passe.*.asp -> *.php
caractère générique fonctionne très bien. Les règles individuelles pour les pages qui ne sont pas une transition directe et qui ont des chaînes de requête sont problématiques. Mais cela semble être la bonne façon de procéder. Si je ne parviens pas à régler cette partie, je vais commencer une nouvelle question à ce sujet.Je voudrais inverser la redirection et la laisser telle qu'elle était à l'origine. Redirigez votre nouveau site vers votre ancien site. Votre ancien site bénéficie probablement déjà de back -links, de l'âge du site Web et du référencement. Il serait dommage de perdre cela juste pour le remplacer par un site plus récent avec un rang de page inférieur. Google punit les redirections. Votre NOUVEAU site n'aura pas encore de référencement dessus, il est donc préférable d'utiliser une redirection sur celui-ci :)
la source