Jump to content

Recommended Posts

Posted

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)?

 

 

Posted

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

 

Posted (edited)

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" 

 

Edited by leobk
Posted

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" 

Posted

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

 

:?:

 

Posted

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.

 

Posted

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??

 

Posted

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]
Posted

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 :(

 

 

Posted

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
...

 

 

Posted

Ou peut-être plus simplement ceci, dans le robots.txt, non ?

Disallow: /index.php/*

 

Posted

Ta règle n'est pas bonne, parce que %{QUERY_STRING} ne contiendra jamais index.php

 

Posted

merci pour votre temps,

je peut comprendre que se n'est pas possible de rediriger cet ensemble d'URL via le fichier htaccess?

Posted

Tout simplement comme ceci, je pense

RewriteRule /index.php/page.*  /index.php ([L]

 

Posted

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

 

 

Posted

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:

 

 

 

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...