8710 sujets

Développement web côté serveur, CMS

Salut à tous,

Je suis bloqué par mon url rewritting alors si vous avez quelques secondes merci de votre aide Smiley smile

Mon problème est le suivant :
- Dans ma bdd, je vais inscrire des membres dont le titre pourra être séparé par un " ", exemple : mon toto

- Du coup, j'ai "forcé" mes liens pour qu'un "-" soit inséré entre chaque mot


echo "<a href='/Annuaire/membres/";
$regex = '# #';
$fetch_replace = preg_replace($regex, '-', $fetch);
echo "".$fetch_replace['titre']." 'class='visit'>Voir sa fiche</a> </div>";


le lien est donc : /Annuaire/membres/mon-toto (sachant que l'url "réelle" des pages est : /Annuaire/membres.php?titre=mon-toto)

Mais dans ma bdd, le membre s'appelle toujours "mon toto", du coup mes liens ne fonctionnent plus.

Aussi, sauf erreur de ma part, il faut que je crée une règle supplémentaire qui indique que le titre doit être séparé par un "-" mais je n'y n' arrive pas, alors merci de votre aide Smiley smile

Voici mon htaccess :


RewriteEngine On
RewriteRule membres/([a-zA-Z0-9\-\%]+) membres.php?titre=$1


Sans ajouter la regex, cela ne fonctionnait pas non plus pour les "titres" séparés par un espace. Mais la page "...montoto" s'affichait correctement...

Je ne vois pas de soluce (avec mes modestes compétences) alors si vous avez une idée. Merci Smiley smile

@plus
Zedbar
Bonsoir,

Si j'ai bien compris, ton problème ne se situe pas au niveau de ton url rewriting.

Sur ta page membres.php avant de faire ta requête SQL il faut que tu reconvertisse les tirets en espace. (avec str_replace c'est plus facile) Mais cela veut dire que tu interdit le caractère "-" dans le nom de tes menbres.
Bonsoir et merci de ton aide Smiley smile
Je dois m'embrouiller dans ce cas je veux faire et dans mon explication.

A la base, mon problème est est le suivant:
- Je requête des fiches de membres à l'aide de leur nom (titre) (et non pas leur id) pour faire plus SEO friendly Smiley smile
- Ensuite, pour faire encore plus SEO Friendly, j'ai réécris les urls "proprement"

Jusque là pas de problème pour les titres du type "montoto". Mais je me suis aperçu, dans mes tests que si le titre d'un membre comporte un espace ("mon toto"), la page ne s'affiche plus.

Ce que je souhaite faire (que l'on voit sur beaucoup de sites), sachant que je ne peux pas empêcher les membres de mettre un espace dans leur titre, c'est "faire en sorte" que la page s'affiche quand même si le titre comporte un espace...

Merci Smiley smile
C'est donc bien ce que j'avais compris Smiley smile

Ne te focalise pas sur ton url rewriting. Tu auras le même problème avec une url de la forme /Annuaire/membres.php?titre=mon-toto

Il faut que le nom de ton utilisateur soit compatible avec le format d'une l'url. Sinon cela ne marche pas.

Pour cela, tu as plusieurs solutions :
- Autoriser uniquement certain caractères dans le nom d'utilisateur (de a à z, de 0 à 9).
- Encoder l'url à l'aide de urlencode par exemple (attention, comme tu le dis, pas très Friendly)
Salut,

Pourquoi, à l'enregistrement du membre, ne sauvegardes tu pas le slug que tu as généré (en remplaçant tous les caractères autres que alphanumériques par ton tiret) ?
Ensuite, tu fais ta requête sur le slug et tu n'as pas de problèmes d'URL Rewriting.
Accessoirement, ça te permets aussi plus facilement, dès le début, de gérer les éventuels doublons...
En gros, pas d'ID mais en slug à la place ! Smiley cligne

tm
tm™ a écrit :
Salut,

Pourquoi, à l'enregistrement du membre, ne sauvegardes tu pas le slug que tu as généré (en remplaçant tous les caractères autres que alphanumériques par ton tiret) ?
Ensuite, tu fais ta requête sur le slug et tu n'as pas de problèmes d'URL Rewriting.
Accessoirement, ça te permets aussi plus facilement, dès le début, de gérer les éventuels doublons...
En gros, pas d'ID mais en slug à la place ! Smiley cligne

tm


+1
Avec un peu de retard mais j'avais mis de coté ce sujet pour le Week End car en dépit de vos explications pertinentes ! je tourne en rond...

Donc, si j'ai bien compris ?
- Au moment de l'inscription d'un membre, je force l'enregistrement pour que chaque mot des "titre" soit enregistré avec "-" si il y a des espaces.
- En revanche, sur la page de présentation d'un membre lorsque j'affiche ses informations, il faudra que je crée la règle inverse pour que son nom (titre) s'affiche sans "-", c'est bien cela ?

Mais ce que je ne comprends pas (j'avoue je suis étanche à certains sujets Smiley decu ) à quoi ca sert de modifier le lien avec "str_replace" ? cela n'aurait jamais pu fonctionner car il faut que le lien corresponde avec ce qui est enregistré en bdd, non !?