Récupérer URL avec php

Fermé
enn_kh Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 3 juillet 2012 - 2 juil. 2012 à 10:18
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 4 juil. 2012 à 10:14
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 ?!!
A voir également:

6 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
2 juil. 2012 à 15:14
Salut,

Essayez avec :
echo "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
1
enn_kh Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 3 juillet 2012 1
3 juil. 2012 à 12:08
non ca marche pas, toujours ça donne l'adresse original
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
3 juil. 2012 à 01:12
est-ce toi qui a écrit les scripts php de ton site, ou utilises-tu un cms?
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
3 juil. 2012 à 09:03
A qui parlez-vous?
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
3 juil. 2012 à 23:38
à enn_kh
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
3 juil. 2012 à 12:18
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
enn_kh Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 3 juillet 2012 1
3 juil. 2012 à 12:21
non, ma question est comment avoir
ce lien http://www.site.com/information-sur-14.html dans une chaine string
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 3/07/2012 à 12:28
elle est pas claire ta question

tu écrit tout simplement : http://www.site.com/information-sur-14.html
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 3/07/2012 à 12:54
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
Modifié par tryan44 le 3/07/2012 à 15:43
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
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
3 juil. 2012 à 16:12
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
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
3 juil. 2012 à 23:45
@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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
4 juil. 2012 à 10:14
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