Aller au contenu
leobk

Rediriger des URLs dynamiques vers une URL statique

Noter ce sujet :

Recommended Posts

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

 

 

Partager ce message


Lien à poster
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

 

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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" 

Partager ce message


Lien à poster
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

 

:?:

 

Partager ce message


Lien à poster
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.

 

Partager ce message


Lien à poster
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??

 

Partager ce message


Lien à poster
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]

Partager ce message


Lien à poster
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 :(

 

 

Partager ce message


Lien à poster
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
...

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Disallow: /index.php/*

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

merci pour votre temps,

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout simplement comme ceci, je pense

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

 

Partager ce message


Lien à poster
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

 

 

Partager ce message


Lien à poster
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:

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Contenu similaire

    • Par kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • Par EloMC
      Bonjour,
      J'ai créé un site poeles-pas-cher.com pour lequel mon client a acheté plusieurs noms de domaine qui ont été redirigés sur l'URL principale. Il ne ressort pas dans les résultats Google ou en tout cas pas dans les 15-20 premières pages. 
      Ma question est liée à ces redirections, elles ont été faites en http, il y a la possibilité de les faire en frame, quelle est la différence ? Existe-t-il une meilleure solution et est-ce que créer des redirections provenant de différentes URLs peut faire perdre en référencement ?
      Merci pour votre aide.
      EL
    • Par fbern
      Bonjour
       
      j'ai un vieux site sous wordpress, et je voudrais faire une dizaine de redirections.
      Je n'ai pas besoin d'expressions régulières, c'est du 1 pour 1.
      N'étant pas développeur, pouvez vous m'aider: dois-je obligatoirement utiliser mod rewrite ?
      Est-ce que vous n'auriez pas une solution plus simple car je n'ose pas mettre les mains dans Apache?
      merci
    • Par PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





    • Par aurelien59
      Bonjour, Je me permet de poster ce problème sur ce forum en plus de l'avoir posté sur un autre. Le problème survient sur un site codé en dur. Depuis plusieurs mois après la mise en place de redirection, je rencontre un problème. La redirection a été mise en place pour rediriger simplement les pages ayant un underscore vers un tiret. Par exemple page_1.php vers page-1.php Dans Google webmasters tools, zone "Exploration", > Erreurs d'exploration > le nombre des URL non suivies à augmenter de manière considérable sur ordinateurs et smartphone.

      Voici un exemple de page contenant l'erreur : page-1.php/page-a.php (alors que la page correcte est page-1.php, la page page-a.php est présente sur le site en racine). Lorsque je clic sur l'url d'erreur, dans l'onglet "Référencée sur". Les url qui apparaissent sont : http://www.monsite.fr/page-2.php/page-b.php'>>http://www.monsite.fr/page-2.php/page-b.php et http://www.monsite.fr/page-2.php/page-c.php'>>http://www.monsite.fr/page-2.php/page-c.php (non indexés sur Google). Voici l'extrait du .htaccess ErrorDocument 404 http://www.monsite.fr/404.phpRewriteEngine onRewriteCond %{HTTP_HOST} ^monsite.fr$RewriteRule ^(.*) http://www.monsite.fr/$1 [QSA,L,R=301]RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]RewriteRule ^(.*)\.php/$ http://www.monsite.fr/$1.php[L,R=301]RewriteRule ^(.*)\.php/(.*)\.php$ http://www.monsite.fr/$1.php[R=301]RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ /404.php [NC,L] Merci beaucoup pour votre aide.
×