OVH Cloud OVH Cloud

[newbie] reecriture d'url avec path_info

10 réponses
Avatar
ticegestion
Bonsoir,
J'ai contacté mon hébergeur pour lui demander si le module mod_rewrite était
chargé. La réponse a été non mais il m'a suggéré d'utiliser la technique du
path_info qui est "tout aussi efficace mais bien plus légère".
Quelqu'un peut il m'apporter des explications ou des adresses qui expliquent
cette méthode.
Merci pour votre aide
Cordialement
Frédéric Redonnet
http://www.ticegestion.com
(site statique bientôt remplacé par un site entièrement réalisé en PHP)

10 réponses

Avatar
Paul Delannoy
ticegestion a écrit:
Bonsoir,
J'ai contacté mon hébergeur pour lui demander si le module mod_rewrite était
chargé. La réponse a été non mais il m'a suggéré d'utiliser la technique du
path_info qui est "tout aussi efficace mais bien plus légère".
Quelqu'un peut il m'apporter des explications ou des adresses qui expliquent
cette méthode.
www.php.net donne ceci : http://fr2.php.net/manual/fr/function.pathinfo.php

J'eqça

Avatar
ticegestion
Bonjour,
Merci pour cette ressource mais je la connaissais déjà et je ne vois pas
comment l'utiliser pour faire de la réécriture d'url.
Cordialement
Frédéric Redonnet
"Paul Delannoy" a écrit dans le message de news:

ticegestion a écrit:
Bonsoir,
J'ai contacté mon hébergeur pour lui demander si le module mod_rewrite
était chargé. La réponse a été non mais il m'a suggéré d'utiliser la
technique du path_info qui est "tout aussi efficace mais bien plus
légère".
Quelqu'un peut il m'apporter des explications ou des adresses qui
expliquent cette méthode.
www.php.net donne ceci :

http://fr2.php.net/manual/fr/function.pathinfo.php
J'eqça



Avatar
Greg
On 10 Nov 2004 19:15:39 GMT
"ticegestion" wrote:

Bonsoir,


'jour,

technique du path_info qui est "tout aussi efficace mais bien plus
légère". Quelqu'un peut il m'apporter des explications ou des adresses
qui expliquent cette méthode.


Je pense qu'il parlait de la variable $_SERVER['PATH_INFO']. Un exemple
étant plus parlant que de longs discours, si ton url est comme suit :
http://tonsite/index.php/chemin/d_acces/quelconque tu pourras récupérer
la partie qui se trouve après le script PHP dans $_SERVER['PATH_INFO']
(ici ce sera égal à '/chemin/d_acces/quelconque').

Greg

Avatar
ticegestion
Bonjour Greg,
"Greg" a écrit dans le message de news:

On 10 Nov 2004 19:15:39 GMT
"ticegestion" wrote:

Bonsoir,


'jour,

technique du path_info qui est "tout aussi efficace mais bien plus
légère". Quelqu'un peut il m'apporter des explications ou des adresses
qui expliquent cette méthode.


Je pense qu'il parlait de la variable $_SERVER['PATH_INFO']. Un exemple
étant plus parlant que de longs discours, si ton url est comme suit :
http://tonsite/index.php/chemin/d_acces/quelconque tu pourras récupérer
la partie qui se trouve après le script PHP dans $_SERVER['PATH_INFO']
(ici ce sera égal à '/chemin/d_acces/quelconque').


Mais j'aurais plutôt des URL du style (adresse générée depuis une page php):
http://www.monsite.net/ressource/cours.php?code=1&format=zip&typecours=TD
et au fond très peu de pages (une page "liste des ressources" et une page
"consultation de la ressource sélectionné" dont l'url ressemblera à
l'exemple ci dessus
Je souhaite donc que les robots puissent indexer la page "liste des
ressources" et suivre les liens sans bloquer au 1er ? ou & rencontré.
j'aurais voulu avoir une url du style
http://www.monsite.net/ressource/cours_TD1_zip.htm (ou même sans htm)

Donc comment utiliser $PATH_INFO pour que le 2ème lien apparaissent dans la
barre d'adresse et qu'il entraine en fait le traitement des variables
figurant dans le premier lien ?
Et je ne vois pas comment sans le MOD_REWRITE, le second lien pourrait ne
pas provoquer d'erreur (si j'ai 100 ressources, je n'ai pas envie de faire
une redirection qui pointe sur cours.php.....)
Pour l'instant je n'ai fait que la partie publication des ressources et
gestion des abonnés. Mais je vais bientôt attaquer la partie "Consultation"
et je souhaite donc partir dès le départ sur des bonnes bases au niveau des
url.
Cordialement
Fred

Greg



Avatar
Greg
On 11 Nov 2004 22:48:28 GMT
"ticegestion" wrote:

'jour,

Mais j'aurais plutôt des URL du style (adresse générée depuis une page
php):
http://www.monsite.net/ressource/cours.php?code=1&format=zip&typecours=TD


ok.

Je souhaite donc que les robots puissent indexer la page "liste des
ressources" et suivre les liens sans bloquer au 1er ? ou & rencontré.
j'aurais voulu avoir une url du style
http://www.monsite.net/ressource/cours_TD1_zip.htm (ou même sans htm)


ici ça va changer. Le lien vers la ressource sera plutôt
http://www.monsite.net/ressource/cours.php/TD_1_zip.html (j'ai rajouté
un underscore entre TD et 1 vu que dans ta première URL c'était un
argument à part).

Donc comment utiliser $PATH_INFO pour que le 2ème lien apparaissent
dans la
barre d'adresse et qu'il entraine en fait le traitement des variables
figurant dans le premier lien ?


Si on garde l'exemple de l'URL juste au dessus, $_SERVER['PATH_INFO']
contiendra la chaîne "/TD1_zip.html". Ensuite c'est à toi de la
découper pour obtenir (par exemple) un tableau qui va contenir les
arguments passés à ton script. Voilà un petit bout de script qui faire
ça :

<?php

// on enlève ce qui ne sert à rien ('/' initial et extension)
$str = substr($_SERVER['PATH_INFO'], 1);
$str = substr($str, 0, strrpos($str, '.'));

$args = explode('_', $str);
print_r($args);

?>

Je te laisse le soin de filtrer ensuite les arguments.

Et je ne vois pas comment sans le MOD_REWRITE, le second lien pourrait
ne pas provoquer d'erreur (si j'ai 100 ressources, je n'ai pas envie
de faire une redirection qui pointe sur cours.php.....)


Pas la peine de faire de redirection, mais par contre il faut prévoir à
la conception de ton site que les liens seront écrits avec le nom du
script dedans. Rien de bien méchant si c'est prévu dès le départ, sinon
il va falloir scripter un peu pour modifier tout ça.

Greg

Avatar
Philippe Chaissac

Mais j'aurais plutôt des URL du style (adresse générée depuis une page php):
http://www.monsite.net/ressource/cours.php?code=1&format=zip&typecours=TD
et au fond très peu de pages (une page "liste des ressources" et une page
"consultation de la ressource sélectionné" dont l'url ressemblera à
l'exemple ci dessus
Je souhaite donc que les robots puissent indexer la page "liste des
ressources" et suivre les liens sans bloquer au 1er ? ou & rencontré.
j'aurais voulu avoir une url du style
http://www.monsite.net/ressource/cours_TD1_zip.htm (ou même sans htm)


Moi, je mettrais dans le .htaccess :
ErrorDocument 404 /ressource/cours.php
(normalement, ça, ça marche toujours)
Et dans cours.php, je parserais $_SERVER['REQUEST_URI'] (ou PATH_INFO)

Avatar
ticegestion
Merci Philippe,
J'y avais pensé à la page d'erreur avant de comprendre la simplicité
d'utilisation du path_info. Mais ça risque de faire long pour ouvrir la page
(il y a déjà les requêtes sql qui ralentissent bien la chose.
Cordialement
Fred

"Philippe Chaissac" a écrit dans le message de news:
419400b0$0$13677$

Mais j'aurais plutôt des URL du style (adresse générée depuis une page
php):
http://www.monsite.net/ressource/cours.php?code=1&format=zip&typecours=TD
et au fond très peu de pages (une page "liste des ressources" et une page
"consultation de la ressource sélectionné" dont l'url ressemblera à
l'exemple ci dessus
Je souhaite donc que les robots puissent indexer la page "liste des
ressources" et suivre les liens sans bloquer au 1er ? ou & rencontré.
j'aurais voulu avoir une url du style
http://www.monsite.net/ressource/cours_TD1_zip.htm (ou même sans htm)


Moi, je mettrais dans le .htaccess :
ErrorDocument 404 /ressource/cours.php
(normalement, ça, ça marche toujours)
Et dans cours.php, je parserais $_SERVER['REQUEST_URI'] (ou PATH_INFO)



Avatar
Zouplaz
Greg - :

On 11 Nov 2004 22:48:28 GMT
"ticegestion" wrote:

'jour,

Mais j'aurais plutôt des URL du style (adresse générée depuis une
page php):
http://www.monsite.net/ressource/cours.php?code=1&format=zip&typecours
=TD


ok.

Je souhaite donc que les robots puissent indexer la page "liste des
ressources" et suivre les liens sans bloquer au 1er ? ou & rencontré.
j'aurais voulu avoir une url du style
http://www.monsite.net/ressource/cours_TD1_zip.htm (ou même sans htm)


ici ça va changer. Le lien vers la ressource sera plutôt
http://www.monsite.net/ressource/cours.php/TD_1_zip.html (j'ai rajouté
un underscore entre TD et 1 vu que dans ta première URL c'était un
argument à part).



Pardon mais il y a quelque chose que je ne saisi pas : tu veux dire dans
cet example ci que c'est bel et bien le script cours.php qui sera invoqué
sans ambiguité ?? Apache ou IIS ne s'emmellent pas les pinceaux avec le
/TD_1_zip.html ?


Avatar
Greg
On 14 Nov 2004 12:37:59 GMT
Zouplaz wrote:

http://www.monsite.net/ressource/cours.php/TD_1_zip.html


Pardon mais il y a quelque chose que je ne saisi pas : tu veux dire
dans cet example ci que c'est bel et bien le script cours.php qui
sera invoqué sans ambiguité ??


Oui. Je ne sais pas comment ça fonctionne au sein d'Apache (vu que c'est
avec lui que je bosse), mais je n'ai jamais eu de soucis avec cette
technique au niveau de l'appel du bon script.

Apache ou IIS ne s'emmellent pas les
pinceaux avec le /TD_1_zip.html ?


Pour Apache, c'est certain que ça fonctionne. Par contre je ne peux rien
dire pour IIS vu que je ne l'ai jamais utilisé avec PHP.

Greg


Avatar
ticegestion
Bonjour,
"Zouplaz" a écrit dans le message de news:

Greg - :

On 11 Nov 2004 22:48:28 GMT
"ticegestion" wrote:

ici ça va changer. Le lien vers la ressource sera plutôt
http://www.monsite.net/ressource/cours.php/TD_1_zip.html (j'ai rajouté
un underscore entre TD et 1 vu que dans ta première URL c'était un
argument à part).



Pardon mais il y a quelque chose que je ne saisi pas : tu veux dire dans
cet example ci que c'est bel et bien le script cours.php qui sera invoqué
sans ambiguité ?? Apache ou IIS ne s'emmellent pas les pinceaux avec le
/TD_1_zip.html ?
Le truc fonctionne en tout cas sur un serveur Apache. Tu mets n'importe quoi

derriere ton fichier .php(du moment qu'il y ait un slash) et apache ouvre
automatiquement le fichier php.
En revanche, ce qui pose un problème c'est pour les liens relatifs définis
dans la page cours.php. En effet, le lien "../image/logo.gif" dans la page
cours.php devrait normalement faire référence à
http://www.monsite.net/image/logo.gif.
Or du fait du rajout du slash après cours.php (et de ce qui suit derriere),
l'image se trouve alors référencée dans
http://www.monsite.net/ressource/image/logo.gif
Donc trois solutions sont possibles :
- correction manuelle de tous les liens pour rajouter un niveau dans
l'arborescence
- définir les liens pointant sur les images (ou autres de la page cours.php)
en lien absolu avec par exemple : 'http://'.$HTTP_HOST.'/images/...'
- copier les dossiers (images, feuilles de style,...) dans le dossier
RESSOURCE
Si une autre solution existe, j'en veux :-)

En tout cas ce serait dommage de ne pas recourir à ça à la place des
....cours.php?code&classe=1STT&...
Cordialement
Fred