Récupérer URL avec php [Fermé]

Signaler
Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
3 juillet 2012
-
Messages postés
5379
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 juillet 2020
-
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

Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
221
Salut,

Essayez avec :
echo "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65449 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
3 juillet 2012
1
non ca marche pas, toujours ça donne l'adresse original
Messages postés
422
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
30 mai 2015
64
est-ce toi qui a écrit les scripts php de ton site, ou utilises-tu un cms?
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
221
A qui parlez-vous?
Messages postés
422
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
30 mai 2015
64
à enn_kh
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
78
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';
Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
3 juillet 2012
1
non, ma question est comment avoir
ce lien http://www.site.com/information-sur-14.html dans une chaine string
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
78
elle est pas claire ta question

tu écrit tout simplement : http://www.site.com/information-sur-14.html
Messages postés
5379
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 juillet 2020
883
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
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
221
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!
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
78
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
Messages postés
422
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
30 mai 2015
64
@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...
Messages postés
5379
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 juillet 2020
883
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