Récupérer URL avec php

enn_kh Messages postés 19 Statut Membre -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

comment récupérer l'URL d'une page web avec php après le rewriting .htaccess
par exemple :
l'adresse original est
http://www.site.com/index.php&id=14&func=start&lng=fr
qui donne
http://www.site.com/information-sur-14.html

donc comment récupérer la deuxième adresse ?!!

6 réponses

  1. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
     
    Salut,

    Essayez avec :
    echo "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    
    1
    1. enn_kh Messages postés 19 Statut Membre 1
       
      non ca marche pas, toujours ça donne l'adresse original
      0
  2. UgglyBoy Messages postés 440 Statut Membre 66
     
    est-ce toi qui a écrit les scripts php de ton site, ou utilises-tu un cms?
    0
    1. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
       
      A qui parlez-vous?
      0
    2. UgglyBoy Messages postés 440 Statut Membre 66
       
      à enn_kh
      0
  3. maka54 Messages postés 721 Statut Membre 80
     
    tu essayes de faire de l'url_rewriting mais apparemment tu te prend à l'envers

    l'adresse original doit être
    http://www.site.com/information-sur-14.html
    et après passage par le htaccess te renvoyer
    http://www.site.com/index.php&id=14&func=start&lng=fr

    donc
    $_GET['id'] = 14;
    $_GET['func] = 'start';
    $_GET['lng] = 'fr';
    0
    1. enn_kh Messages postés 19 Statut Membre 1
       
      non, ma question est comment avoir
      ce lien http://www.site.com/information-sur-14.html dans une chaine string
      0
    2. maka54 Messages postés 721 Statut Membre 80
       
      elle est pas claire ta question

      tu écrit tout simplement : http://www.site.com/information-sur-14.html
      0
  4. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Bonjour enn_kh,

    On dirait que dans le dialogue entre Apache et Php, Php ne reçoit que le résultat du traitement de l'URL par mod_rewrite (tu pourrais afficher $_SERVER en totalité pour t'en assurer, et voir s'il n'y a pas une qui puisse te servir).

    print_r($_SERVER) 

    Sinon, maka54 a raison, http://www.site.com/index.php&id=14&func=start&lng=fr est le résultat de l'url rewrite de la requête http://www.site.com/information-sur-14.html fait par mod_rewrite et pas l'inverse comme tu sembles l'indiquer dans ton message d'origine.

    Une autre possibilité est d'essayer de répliquer le traitement de l'expression rationnelle utilisée avec la fonction Php preg_replace.

    Il suffit en théorie de connaître l'expression utilisée par les directives utilisées par mod_rewrite (contenues dans ton .htaccess), et élaborer l'expression inverse pour obtenir l'URL :-) avec preg_replace.

    S'il y a de nombreuses règles de réécriture cela peut être rigolo ;-)

    Il y a quoi dans ton .htaccess ?

    Dal
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
     
    Il dit que :
    l'adresse original est :
    http://www.site.com/index.php&id=14&func=start&lng=fr
    ce qui donne une fois ré écrit :
    http://www.site.com/information-sur-14.html

    Donc son url rewriting est déjà en place et fonctionnel.

    Ensuite il dit vouloir récupérer l'url ré écrite.
    Si il place la ligne suivante dans la page ré écrite :
    echo "[http://]" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];

    il obtient l'url en cours de la page consulté, donc l'url ré écrite. Il faut juste placer la ligne de code ci-dessus dans une variable ou fonction pour récupérer l'url.
    Une question stupide engendre une réponse stupide!
    Une question mal formulé engendre une réponse aléatoire!
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      vu comme çà en effet mais comme il t'a répondu au ton premier

      cette ligne lui renvoie l'adresse originale :
      http://www.site.com/index.php&id=14&func=start&lng=fr

      Donc non son url rewriting n'est pas en place
      0
    2. UgglyBoy Messages postés 440 Statut Membre 66
       
      @maka54 bien vu.
      D'où ma question au début: a-t-il lui même écrit son site, maîtrise-t-il tout les scripts d'url rewriting et le .htaccess ? Car si c'est le cas il ne devrait avoir pas à recupérer la REQUEST_URI pour rétro-fabriquer l'URI originelle...
      0
  7. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    En gros, il y a un malentendu.

    Si les URL telles que http://www.site.com/information-sur-14.html arrivent au serveur, c'est qu'elles ont été générées dans des pages servies par celui-ci.

    Il doit donc y avoir dans le code Php de notre ami enn_kh du code qui s'occupe déjà de construire une jolie URL à partir de paramètres internes.

    Comme indiqué plus haut, le "rewriting .htaccess" (le module Apache mod_rewrite certainement, bien que notre ami ne le précise pas) ne s'occupe que de réécrire les URL des requêtes reçues par le serveur.

    Dal
    0