Aller au contenu

Rediriger des URLs dynamiques vers une URL statique


Sujets conseillés

Bonjour,

 

J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols

j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé

un nombre énorme d'URLs de type :

www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0

redirigent vers :

www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0

 

L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques

Voici la structure d'URL si on fait une recherche de vol sur le site principal :

https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2

 

 

existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?

 

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et bienvenue à bord !

 

Tu veux rediriger toutes tes URLs dynamiques vers une seule URL statique (hors de l'accueil) ou bien rediriger chaque URL dynamique vers sa propre URL statique ?

J'imagine que dans ton esprit URL statique signifie URL html ?

 

Si tu veux passer les paramètres de l'ancienne URL vers la nouvelle il faudra scanner la QUERY_STRING, mais la nouvelle URL aura des paramètres par défaut vu que certains ne sont pas repris dans l'ancienne URL.

 

Ce serait plus simple avec l'URL du site, parce que là on est dans le flou.


Dan

 

Lien vers le commentaire
Partager sur d’autres sites

Merci,

 

voici un exemple de l'ancienne URL (plus de 10000 URL de même type) :

http://fr.nouvelair.com/fr/vols/index?f_type=00&f_departure=NTE&f_destination=MIR&f_date_from=09/07/2015&f_flexibility=3&f_paxs_adults=1&f_paxs_childs=0&f_paxs_infants=0

 

Voici un exemple de la nouvelle URL :

https://www.nouvelair.com/fr/resa?depart=NTE&arrivee=MIR&aller=2017-11-24&retour=&adultes=1&enfants=0&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=1&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=3

 

Comme vous le voyez les paramètres sont changés.

Je veut rediriger toutes les anciennes URLs vers la nouvelle structure en gardant uniquement la correspondance entre les deux paramètres suivant : "f_departure" et "f_destination" ==> "depart" et "arrivee" 

 

Modifié par leobk
Lien vers le commentaire
Partager sur d’autres sites

J'ai besoin d'une règle de redirection en PHP des anciennes URLs vers les URLs du domaine principal et biensur en conservant uniquement la correspondance entre les deux paramètres suivant : "f_departure" et "f_destination" ==> "depart" et "arrivee" 

Lien vers le commentaire
Partager sur d’autres sites

La nouvelle URL doit être de la forme :

 

https://www.nouvelair.com/fr/resa?depart=NTE&arrivee=MIR&aller=2017-11-24&retour=&adultes=1&enfants=0&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=1&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=3

 

ou bien seulement ceci :

 

https://www.nouvelair.com/fr/resa?depart=NTE&arrivee=MIR

 

:?:

 

Lien vers le commentaire
Partager sur d’autres sites

Dans ce cas c'est très simple à faire ;)

Dans le fichier .htaccess de l'ancien domaine, tu mets ceci :

RewriteCond %{QUERY_STRING} f_departure=([A-Z]*)&f_destination=([A-Z]*)
RewriteRule .* https://www.nouvelair.com/fr/resa?depart=%1&arrivee=%2 [R=301,L]

Cela fonctionnera quelle que soit la longueur et la valeur du paramètre de f_departure et f_destination, dans la mesure où ces deux variables se suivent toujours dans cet ordre là, l'une suivant l'autre.

 

Lien vers le commentaire
Partager sur d’autres sites

Merci infiniment,

Une dernière question.

j'ai constaté une liste d'URLs indexées de type 

https://www.monsite.com/index.php/open/imin_issar

https://www.monsite.com/index.php/cannes/images/series

https://www.monsite.com/index.php/news.php?id=151

.

...

Ces URLs fictives proposent le même contenu de l'accueil

je veut bien les désindexer. je ne peut pas le faire via un meta robot "noindex" par ce que ça va désindexer ma page d'accueil

Puisse-je les désindexer au niveau du robots.txt??

 

Lien vers le commentaire
Partager sur d’autres sites

Rebonjour,

si je veut que le paramètre "f_date_from" soit aussi pris en considération à condition que la date de départ soit J+5

que je dois ajouter à ce code?

RewriteCond %{QUERY_STRING} f_departure=([A-Z]*)&f_destination=([A-Z]*)
RewriteRule .* https://www.nouvelair.com/fr/resa?depart=%1&arrivee=%2 [R=301,L]
Lien vers le commentaire
Partager sur d’autres sites

Pour les URLs de sous-répertoires de index.php, je vais laisser un autre répondre, parce que je ne suis pas un expert du robots.txt

 

Et pour une date de départ à J+5, je crains que le fichier .htaccess ne permette pas de la calculer. Mais je peux me tromper :(

 

 

Lien vers le commentaire
Partager sur d’autres sites

Pour la désindexation des URLs en /index.php/....

le code suivant est -il correcte?

----------------------------------------------------------------------------------------

RewriteCond %{QUERY_STRING} ^index.php/(.*)$ [NC]
RewriteRule . – [E=headernoindex]
Header set X-Robots-Tag « noindex,follow » env=headernoindex

--------------------------------------------------------------------------------

 

Notant que je veux désindexer un ensemble d'URLs de type :

http://www.monsite.com/index.php/page1.htm
http://www.monsite.com/index.php/page2.htm
http://www.monsite.com/index.php/page3.htm
...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Ou, si le répertoire n'est pas nommé page... comme ceci

 

RewriteRule /index.php/[a-z]* /index.php? [L]

La redirection vers index.php? permet de supprimer le %{QUERY_STRING} s'il est présent. Sans le ? il serait transmis automatiquement.

Cela pour fonctionner avec ton exemple donné plus haut :

index.php/news.php?id=151

 

 

Lien vers le commentaire
Partager sur d’autres sites

C'est mon dernier exemple qui doit être utilisé dans ce cas ;)

Peut-être en remplaçant [a-z]* par [a-z]+ pour s'assurer qu'il y a au moins un caractère.

Et éventuellement en remplaçant [L] par [NC,L] si tu as des majuscules...

 

C'est de mémoire, et non testé :whistling:

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...