salut,
je commence a me pencher sur le mod_rewrite d'apache
et afin de laisser le choix d'implementer ou non ce mode, je définis une
globale dans mon appli
mes liens sont formatés de facon standard :
index.php?rub=news&id=78
j'ai une fonction URLrewrite() qui contient les ereg pour formater mes
liens et j'appelle cette fonction de callback en gerant le flux HTML via PHP
-->
if (URL_REWRITE==1) ob_start('URLrewrite'); else ob_start();
que pensez vous de cette méthode ?
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis
preneur de toutes vos idées.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Daspet
simOn wrote:
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus rapides.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type script.php/xxx/yyy/zzzz et faire par exemple : forum.php/TitreForum/message à la place de forum.php?titre=TitreForum&msg=message
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas spécifier l'extension du script (qui sera déterminée automatiquement par apache s'il n'y a pas d'autres fichiers de même nom avec une extension différente) et faire forum/TitreForum/message
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom du script) au départ (ce qui devrait être peu gênant dans la plupart des cas). Tu pourra relire et réinterpréter l'URL avec le $_SERVER['HTTP_REQUEST_URI'].
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs laissent modifier cette directive. Il suffit alors de te débrouiller pour que tes URL ne correspondent à aucun fichier existant et donner un script PHP comme erreur 404. Ton script pourra réinterpréter $_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai 404 ou exécuter les bons scripts).
Il y a quelques autres bidouilles mais qui demandent le controle de la conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le mod_rewrite.
-- Eric
simOn wrote:
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis
preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus
rapides.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de
laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type
script.php/xxx/yyy/zzzz et faire par exemple :
forum.php/TitreForum/message à la place de
forum.php?titre=TitreForum&msg=message
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas
spécifier l'extension du script (qui sera déterminée automatiquement par
apache s'il n'y a pas d'autres fichiers de même nom avec une extension
différente) et faire forum/TitreForum/message
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom
du script) au départ (ce qui devrait être peu gênant dans la plupart des
cas). Tu pourra relire et réinterpréter l'URL avec le
$_SERVER['HTTP_REQUEST_URI'].
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs
laissent modifier cette directive. Il suffit alors de te débrouiller
pour que tes URL ne correspondent à aucun fichier existant et donner un
script PHP comme erreur 404. Ton script pourra réinterpréter
$_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai
404 ou exécuter les bons scripts).
Il y a quelques autres bidouilles mais qui demandent le controle de la
conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le
mod_rewrite.
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus rapides.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type script.php/xxx/yyy/zzzz et faire par exemple : forum.php/TitreForum/message à la place de forum.php?titre=TitreForum&msg=message
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas spécifier l'extension du script (qui sera déterminée automatiquement par apache s'il n'y a pas d'autres fichiers de même nom avec une extension différente) et faire forum/TitreForum/message
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom du script) au départ (ce qui devrait être peu gênant dans la plupart des cas). Tu pourra relire et réinterpréter l'URL avec le $_SERVER['HTTP_REQUEST_URI'].
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs laissent modifier cette directive. Il suffit alors de te débrouiller pour que tes URL ne correspondent à aucun fichier existant et donner un script PHP comme erreur 404. Ton script pourra réinterpréter $_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai 404 ou exécuter les bons scripts).
Il y a quelques autres bidouilles mais qui demandent le controle de la conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le mod_rewrite.
-- Eric
simOn
Eric Daspet wrote:
salut eric, ( marrant, j'te vois partout ;-)... )
simOn wrote:
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus rapides.
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est lent, chiant à pondre et indéchiffrable en lecture.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type script.php/xxx/yyy/zzzz et faire par exemple :
"Sur la plupart" ? quel est ce mystère ;-)
forum.php/TitreForum/message à la place de forum.php?titre=TitreForum&msg=message
très bien, c'est le procédé utilisé par olivier sur dotclear, non ? (hormis le fait qu'il formate le nom des billets et les stocke en base)
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas spécifier l'extension du script (qui sera déterminée automatiquement par apache s'il n'y a pas d'autres fichiers de même nom avec une extension différente) et faire forum/TitreForum/message
je ne connaissais pas ce mod, vais me renseigner dessus
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom du script) au départ (ce qui devrait être peu gênant dans la plupart des cas). Tu pourra relire et réinterpréter l'URL avec le $_SERVER['HTTP_REQUEST_URI'].
j'utilise déjà cette technique
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs laissent modifier cette directive. Il suffit alors de te débrouiller pour que tes URL ne correspondent à aucun fichier existant et donner un script PHP comme erreur 404. Ton script pourra réinterpréter $_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai 404 ou exécuter les bons scripts).
encore une astuce intéressante ;-)
Il y a quelques autres bidouilles mais qui demandent le controle de la conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le mod_rewrite.
merci pour tout !
Eric Daspet wrote:
salut eric, ( marrant, j'te vois partout ;-)... )
simOn wrote:
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je
suis preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus
rapides.
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est
lent, chiant à pondre et indéchiffrable en lecture.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de
laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type
script.php/xxx/yyy/zzzz et faire par exemple :
"Sur la plupart" ? quel est ce mystère ;-)
forum.php/TitreForum/message à la place de
forum.php?titre=TitreForum&msg=message
très bien,
c'est le procédé utilisé par olivier sur dotclear, non ?
(hormis le fait qu'il formate le nom des billets et les stocke en base)
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas
spécifier l'extension du script (qui sera déterminée automatiquement par
apache s'il n'y a pas d'autres fichiers de même nom avec une extension
différente) et faire forum/TitreForum/message
je ne connaissais pas ce mod, vais me renseigner dessus
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom
du script) au départ (ce qui devrait être peu gênant dans la plupart des
cas). Tu pourra relire et réinterpréter l'URL avec le
$_SERVER['HTTP_REQUEST_URI'].
j'utilise déjà cette technique
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs
laissent modifier cette directive. Il suffit alors de te débrouiller
pour que tes URL ne correspondent à aucun fichier existant et donner un
script PHP comme erreur 404. Ton script pourra réinterpréter
$_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai
404 ou exécuter les bons scripts).
encore une astuce intéressante ;-)
Il y a quelques autres bidouilles mais qui demandent le controle de la
conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le
mod_rewrite.
y'a t'il plus simple ? plus optimisé ( les regex c'est lourd ) ? je suis preneur de toutes vos idées.
Déjà tu peux utiliser les preg_, qui sont globalement *beaucoup* plus rapides.
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est lent, chiant à pondre et indéchiffrable en lecture.
Maintenant tu as d'autres possibilités que le mod_rewrite, histoire de laisser tes belles URL même sur les hébergements mutualisés :
Sur la plupart des configurations en CGI tu peux faire des URL du type script.php/xxx/yyy/zzzz et faire par exemple :
"Sur la plupart" ? quel est ce mystère ;-)
forum.php/TitreForum/message à la place de forum.php?titre=TitreForum&msg=message
très bien, c'est le procédé utilisé par olivier sur dotclear, non ? (hormis le fait qu'il formate le nom des billets et les stocke en base)
Sur les Apache avec mod_negociation tu peux même en profiter pour ne pas spécifier l'extension du script (qui sera déterminée automatiquement par apache s'il n'y a pas d'autres fichiers de même nom avec une extension différente) et faire forum/TitreForum/message
je ne connaissais pas ce mod, vais me renseigner dessus
On revient à faire comme un rewrite mais avec un préfixe imposé (le nom du script) au départ (ce qui devrait être peu gênant dans la plupart des cas). Tu pourra relire et réinterpréter l'URL avec le $_SERVER['HTTP_REQUEST_URI'].
j'utilise déjà cette technique
Tu as aussi la bidouille du ErrorDocument. La plupart des hébergeurs laissent modifier cette directive. Il suffit alors de te débrouiller pour que tes URL ne correspondent à aucun fichier existant et donner un script PHP comme erreur 404. Ton script pourra réinterpréter $_SERVER['HTTP_REQUEST_URI'] et agir en conséquence (générer une vrai 404 ou exécuter les bons scripts).
encore une astuce intéressante ;-)
Il y a quelques autres bidouilles mais qui demandent le controle de la conf Apache, je pense que dans ce cas là c'est aussi bien d'activer le mod_rewrite.
merci pour tout !
Eric Daspet
simOn wrote:
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est lent, chiant à pondre et indéchiffrable en lecture.
Oui, mais quitte à les utiliser autant limiter les dégats en utilisant la bonne librairie.
"Sur la plupart" ? quel est ce mystère ;-)
"chezmoicamarche". Sauf erreur il s'agit d'un comportement standard mais j'ai ouie dire que ça posait problème à certains, donc je prend mes précautions. Je n'en sais pas plus.
très bien, c'est le procédé utilisé par olivier sur dotclear, non ? (hormis le fait qu'il formate le nom des billets et les stocke en base)
Par défaut oui, je crois. Enfin il est en train d'implémenter la possibilité de rewrite là, et il a autorise aussi l'astuce du 404.
je ne connaissais pas ce mod, vais me renseigner dessus
Il est inclu par défaut, et activé sur la plupart des hébergeurs. En fait il est prévu pour faire de l'auto-négociation de contenu. Tu lui met un fichier html, un xhtml et un txt, il fera tout seul le choix en fonction du navigateur. Pareil en lui mettant un gif, un png et un mng. Ça c'est la théorie. En pratique comme le navigateur majoritaire n'envoie pas les entêtes adéquates ça ne sert à rien à part des astuces du genre, ou la négociation automatique de langue sur les contenus statiques.
Ceci dit là on sort un peu trop du PHP, mail si tu as besoin de plus d'infos. -- Eric
simOn wrote:
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est
lent, chiant à pondre et indéchiffrable en lecture.
Oui, mais quitte à les utiliser autant limiter les dégats en utilisant
la bonne librairie.
"Sur la plupart" ? quel est ce mystère ;-)
"chezmoicamarche". Sauf erreur il s'agit d'un comportement standard mais
j'ai ouie dire que ça posait problème à certains, donc je prend mes
précautions. Je n'en sais pas plus.
très bien,
c'est le procédé utilisé par olivier sur dotclear, non ?
(hormis le fait qu'il formate le nom des billets et les stocke en base)
Par défaut oui, je crois. Enfin il est en train d'implémenter la
possibilité de rewrite là, et il a autorise aussi l'astuce du 404.
je ne connaissais pas ce mod, vais me renseigner dessus
Il est inclu par défaut, et activé sur la plupart des hébergeurs. En
fait il est prévu pour faire de l'auto-négociation de contenu. Tu lui
met un fichier html, un xhtml et un txt, il fera tout seul le choix en
fonction du navigateur. Pareil en lui mettant un gif, un png et un mng.
Ça c'est la théorie. En pratique comme le navigateur majoritaire
n'envoie pas les entêtes adéquates ça ne sert à rien à part des astuces
du genre, ou la négociation automatique de langue sur les contenus
statiques.
Ceci dit là on sort un peu trop du PHP, mail si tu as besoin de plus
d'infos.
--
Eric
c'est noté. En général, j'evite l'utilisation des REGEX parce que c'est lent, chiant à pondre et indéchiffrable en lecture.
Oui, mais quitte à les utiliser autant limiter les dégats en utilisant la bonne librairie.
"Sur la plupart" ? quel est ce mystère ;-)
"chezmoicamarche". Sauf erreur il s'agit d'un comportement standard mais j'ai ouie dire que ça posait problème à certains, donc je prend mes précautions. Je n'en sais pas plus.
très bien, c'est le procédé utilisé par olivier sur dotclear, non ? (hormis le fait qu'il formate le nom des billets et les stocke en base)
Par défaut oui, je crois. Enfin il est en train d'implémenter la possibilité de rewrite là, et il a autorise aussi l'astuce du 404.
je ne connaissais pas ce mod, vais me renseigner dessus
Il est inclu par défaut, et activé sur la plupart des hébergeurs. En fait il est prévu pour faire de l'auto-négociation de contenu. Tu lui met un fichier html, un xhtml et un txt, il fera tout seul le choix en fonction du navigateur. Pareil en lui mettant un gif, un png et un mng. Ça c'est la théorie. En pratique comme le navigateur majoritaire n'envoie pas les entêtes adéquates ça ne sert à rien à part des astuces du genre, ou la négociation automatique de langue sur les contenus statiques.
Ceci dit là on sort un peu trop du PHP, mail si tu as besoin de plus d'infos. -- Eric
simOn
Eric Daspet wrote:
[...] Ceci dit là on sort un peu trop du PHP, mail si tu as besoin de plus d'infos.
merci pour le complèment. ++
--simon
Eric Daspet wrote:
[...]
Ceci dit là on sort un peu trop du PHP, mail si tu as besoin de plus
d'infos.