[spip-dev] Gestion d'URL personnalisés ...

Hello,

je suis en train d'essayer de définir ma propre gestion d'URL, pour
avoir des URL apparemment sans paramètres (bien pour les robots), et
sans avoir besoin de configurer une Rewrite Rule d'Apache.

Cela donnera des URL du type :
http://www.gasteroprod.com/fakedir.php3/internet/design/index.html
http://www.gasteroprod.com/fakedir.php3/internet/design/article15.html

J'ai bien compris, grâce à l'explication de la doc, comment écrire mes
fonctions 'generer_url_...', mais je ne vois pas trop comment est géré
l'affaire par la suite, même en parcourant le fichier du Monde Diplo
(ils utilisent Apache, de toute façon).

Je pense bien que je vais devoir faire des traitements dans mon
'fakedir.php3', mais qui pourrait m'expliquer l'usage de ce qui suit :

function recuperer_parametres_url($fond, $url) {
  global $contexte;
  return;
}

Merci d'avance.

Nicolas.

PS: vous notterez que cette gestion d'URL répondra en partie à la
question se trouvant dans le forum lié à la doc justement ...

Salut,

Je ne vois vraiment pas comment tu peux te passer de rewrite-rules,
à part générer explicitement les fichiers internet/design/machin.html ?
Le Monde Diplo utilise précisément une flopée de rewrite-rules pour
rediriger toutes les requêtes vers quelques fichiers d'appel de squelette :
ensuite le $REQUEST_URI peut être utilisé pour savoir quelle était la requête
originale.

recuperer_parametres_url() sert à générer les paramètres
nécessaires au squelette. Par exemple pour
http://www.gasteroprod.com/fakedir.php3/internet/design/article15.html
tu vas générer un $contexte['id_article'] = 15.
Pour http://www.gasteroprod.com/fakedir.php3/internet/design/index.html,
ce sera $contexte['id_rubrique'] = X où X est le résultat des requêtes
MySQL qui à partir de "internet/design" te donneront le numéro de
la rubrique ainsi désignée (ce qui implique de réserver un champ dans
les rubriques, par exemple descriptif, pour y stocker le nom utilisé
dans les URLs : SELECT id_rubrique FROM spip_rubriques WHERE
descriptif="internet" AND id_parent=0, puis SELECT id_rubrique FROM
spip_rubriques WHERE descriptif="design" AND id_parent=Y).

Oui, ce n'est pas tout simple, mais je ne vois pas d'autre moyen
de faire. Ceci dit s'il s'agit juste d'avoir des URLs sans paramètres,
tu peux te contenter de rubrique123.html et article456.html, qui
ne nécessitent pas de customiser le recuperer_parametres_url().

a+

Antoine.

Nicolas Hoizey wrote:

Hello,

je suis en train d'essayer de définir ma propre gestion d'URL, pour
avoir des URL apparemment sans paramètres (bien pour les robots), et
sans avoir besoin de configurer une Rewrite Rule d'Apache.

Cela donnera des URL du type :
http://www.gasteroprod.com/fakedir.php3/internet/design/index.html
http://www.gasteroprod.com/fakedir.php3/internet/design/article15.html

J'ai bien compris, grâce à l'explication de la doc, comment écrire mes
fonctions 'generer_url_...', mais je ne vois pas trop comment est géré
l'affaire par la suite, même en parcourant le fichier du Monde Diplo
(ils utilisent Apache, de toute façon).

Je pense bien que je vais devoir faire des traitements dans mon
'fakedir.php3', mais qui pourrait m'expliquer l'usage de ce qui suit :

function recuperer_parametres_url($fond, $url) {
  global $contexte;
  return;
}

Merci d'avance.

Nicolas.

Hello,

Je ne vois vraiment pas comment tu peux te passer de rewrite-rules,
à part générer explicitement les fichiers
internet/design/machin.html ?

Avec l'URL
http://www.gasteroprod.com/fakedir.php3/internet/design/article15.html,
je vais avoir dans le script 'fakedir.php3' la variable $PATH_INFO qui
contient '/internet/design/article15.html', donc en déduire que c'est
un article à afficher, et lequel, est ensuite trivial.

Pas besoin de rewrite-rules, du coup, ce qui est plus pratique sur un
hébergeur qui ne les accepte pas ... :wink:

recuperer_parametres_url() sert à générer les paramètres
nécessaires au squelette.
[...] tu vas générer un $contexte['id_article'] = 15.

OK, donc je peux me passer de cette fonction, vu que cela va être fait
dans mon 'fakedir.php3', de même que ce qui se trouve habituellement
dans les 'article.php3', 'rubrique.php3' et autres ...

la rubrique ainsi désignée (ce qui implique de réserver un champ
dans les rubriques, par exemple descriptif, pour y stocker le nom
utilisé dans les URLs :
SELECT id_rubrique FROM spip_rubriques WHERE descriptif="internet" AND id_parent=0
SELECT id_rubrique FROM spip_rubriques WHERE descriptif="design" AND id_parent=Y

En fait, j'ai directement 'internet/design' dans le descriptif de ma
rubrique 'Design' ...

OK, c'est pas propre parce qu'il faut alors bien mettre le 'internet/'
dans toutes les sous-rubriques de 'Internet', mais au moins, je n'ai
qu'une requête à faire :

SELECT id_rubrique FROM spip_rubriques WHERE descriptif='internet/design'

tu peux te contenter de rubrique123.html et article456.html, qui
ne nécessitent pas de customiser le recuperer_parametres_url().

Non, justement, puisque je ne peux pas avoir de rewrite-rules ...

Nicolas.

--
Nicolas HOIZEY - Analyst @ TechMetrix Research

  Free PHP projects http://www.phpheaven.net
Veille tous azimuts http://www.gasteroprod.com

Bon, ne nous emballons pas, je vais finalement faire beaucoup plus
simple pour ne pas bousiller les perfs :

http://www.gasteroprod.com/article.php3/15.html
http://www.gasteroprod.com/rubrique.php3/25/index.html

Je vous tiens au courant ... :slight_smile:

Nicolas.

--
Nicolas HOIZEY - Analyst @ TechMetrix Research

  Free PHP projects http://www.phpheaven.net
Veille tous azimuts http://www.gasteroprod.com

Ca ne bousille pas les perfs, puisque le recuperer_parametres_url()
n'est appelé que si la page est recalculée. Dans les autres cas,
le nom du fichier cache étant directement dérivé de la $REQUEST_URI,
on sait automatiquement quel fichier utiliser sans calcul supplémentaire.

a+

Antoine.

Nicolas Hoizey wrote:

Bon, ne nous emballons pas, je vais finalement faire beaucoup plus
simple pour ne pas bousiller les perfs :

> http://www.gasteroprod.com/article.php3/15.html
> http://www.gasteroprod.com/rubrique.php3/25/index.html

Je vous tiens au courant ... :slight_smile:

Nicolas.

Ca ne bousille pas les perfs, puisque le recuperer_parametres_url()
n'est appelé que si la page est recalculée.

Oui, je sais bien, mais je pense au pauvre visiteur qui se prend la
mise à jour du cache dans la tronche, alors que le serveur n'est déjà
pas un foudre de guerre ... :slight_smile:

--
Nicolas HOIZEY - Analyst @ TechMetrix Research

  Free PHP projects http://www.phpheaven.net
Veille tous azimuts http://www.gasteroprod.com