danomen2009 Posté 7 Janvier 2010 Posté 7 Janvier 2010 Bonjour à tous, Je suis nouveau par ici, mais j'ai lu les articles de Dan sur les fichiers .htacess et la ré-écriture des URL. Mon but est de permettre aux utilisateurs d'utiliser des liens simplifiés pour accéder à leur page publique, pour ensuite facilement les référencer sur leur blogue ou dieu-sais-ou sur le net. Je suis arrivé à pondre ceci : adresse url de départ : "http://domaine.com/USERNAME/" Moulinette : Options +FollowSymlinksRewriteEngine on RewriteRule ^(.+[^/])/$ profile.php?m=$1 [L] adresse résultante : "http://domaine.com/profile.php?m=USERNAME" Ça fonctionne de façon impeccable. Sauf que la mon client veux cette url à la place : "http://domaine.com/USERNAME" sans "/" a la fin! je veux bien, mais la j'ai tout essayé les méthodes que je connais en vain! Pour vous aider, je suis hébergé chez Iweb Technologies en serveurs mutualisés. Évidement, rien sur leur site ne laisse présager une solution ha ha ha! Vive les services aux clients
captain_torche Posté 7 Janvier 2010 Posté 7 Janvier 2010 Tout dépend des autres formes d'urls que tu peux avoir (il ne faut pas d'interférence), mais on peut très bien envisager quelque chose comme ça : RewriteRule ^([a-z0-9]+)$ profile.php?m=$1 [L] Il faudra sans doute adapter l'expression régulière si tu autorises des tirets, underscores ou autres dans les noms d'utilisateur.
danomen2009 Posté 7 Janvier 2010 Auteur Posté 7 Janvier 2010 (modifié) Merci de ta réponse Captain_torche! j'ai testé cette expression et y ai incorporé le tiret, le souligné et l'underscore : #RewriteRule ^([a-z0-9-_\.]+)$ profile.php?m=$1 [L] mais là, tout comme mes essais précédents mon post, toutes les pages de mon site convergent vers profile.php et le paramètre $1 ne parviens pas a la page elle-même. Mon site est constitué de grosso-modo 4 dossiers /img/ /css/ /modules/ /language/ et mes pages sont en PHP, toutes sauf 404.shtml... Tu me parlais de créer des règles qui éviterons l'interférence entre toutes mes pages et profile.php? Là il faudrait m'expliquer un peut Merci encore de ton aide Jean-Sébastien Modifié 7 Janvier 2010 par captain_torche Inutile de citer le message précédent; on vient de le lire
captain_torche Posté 7 Janvier 2010 Posté 7 Janvier 2010 Réessaye avec le tiret à la toute fin de l'expression, pour voir ? (Au milieu il est interprété comme un intervalle) RewriteRule ^([a-z0-9_-]+)$ profile.php?m=$1 [L] Tu parles de souligné et d'underscore ... ce sont le même caractère (_). Par contre, tu incorpores un point : les pseudos peuvent en contenir un ? Quant aux interférences, si jamais tu as une page qui s'appelle toto (sans extension), elle sera réécrite en profile.php?m=toto, même s'il ne s'agit pas d'un nom de membre.
danomen2009 Posté 7 Janvier 2010 Auteur Posté 7 Janvier 2010 (modifié) Oups, je ne m'était pas relu, désolé pour l'histoire de caractères haha! En effet ça fonctionne de façon impeccable! Mais j'ai besoin du point dans le nom d'utilisateur. Je viens de contacter mon client et c'est vraiment important, selon-lui, c'est possible sur facebook et myspace ? j'imagine qu'il y a quelque chose qui m'échappe, peut être faire une règle qui fait exception aux noms terminant par *.php, *.html, *.shtml Bizzare! Jean-Sébastien Modifié 7 Janvier 2010 par danomen2009
captain_torche Posté 7 Janvier 2010 Posté 7 Janvier 2010 Tu pourrais donner un exemple de chaque "genre" de page que tu as sur ton site ? Sinon, en ajoutant le point, ça donne ça : RewriteRule ^([a-z0-9_\.-]+)$ profile.php?m=$1 [L]
danomen2009 Posté 7 Janvier 2010 Auteur Posté 7 Janvier 2010 (modifié) En effet, j'aurais du donner plus de détails sur les noms de pages en question! j'ai des pages comme : profile.php activation.php home.php index.php invite.php suscribe.php vote.php 404.shtml (obligé d'être en shtml a cause de l'hébergeur ) et j'en passe! En effet, le code que tu m'as donné avec le point fonctionne, mais toutes les pages du répertoire de base sont redirigées vers "profile.php?m=" Merci encore de ton aide précieuse! Je me sens un peut bête ! Jean-Sébastien Modifié 7 Janvier 2010 par danomen2009
captain_torche Posté 7 Janvier 2010 Posté 7 Janvier 2010 Oui, effectivement, avec le point, on capture toutes ces pages Il faut faire une première réécriture pour ces pages, qui ne fait rien, mais indique malgré tout qu'on n'applique plus de règles pour elles. RewriteRule ^.*\.(php|s?html){:content:}nbsp; - [L] Si à la racine de ton site, tu n'as que des fichiers shtml et php, ça devrait fonctionner : le tiret dans la réécriture indique de ne rien faire, et le flag [L] indique qu'on n'exécute plus aucune autre règle après celle-ci. Quant aux images, javascripts et CSS, comme ils sont dans des sous-répertoires, ils ne devraient pas être impactés. Bien entendu, tu dois placer cette ligne AVANT l'autre dans ton fichier
danomen2009 Posté 7 Janvier 2010 Auteur Posté 7 Janvier 2010 (modifié) Vive le htaccess, des heures de plaisir ! Pour une raison que j'ignore, ça ne fonctionne toujours pas, même si logiquement ça fait du sens? Options +FollowSymlinksRewriteEngine on RewriteRule ^.*\.(php|s?html){:content:}nbsp; - [L]RewriteRule ^([a-z0-9_\.-]+)$ profile.php?m=$1 [L] Modifié 7 Janvier 2010 par danomen2009
captain_torche Posté 8 Janvier 2010 Posté 8 Janvier 2010 Je sais pas ce qui s'est passé avec le forum, mais le "{:content:}nbsp;" n'a rien à faire ici Le code doit ressembler à ça : RewriteRule ^.*\.(php|s?html)$ - [L]
danomen2009 Posté 8 Janvier 2010 Auteur Posté 8 Janvier 2010 Ouais, je me demandais aussi, mai j'hésitais a l'essayer dans le {:content:} De toute façon ça fonctionne de façon impeccable Je te remercies "ohh Captain!" j'en apprends tout les jours Jean-Seb
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant