8796 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Encore moi et mes questions pièges.

Problématique :

J'ai créé un site (ou du moins, pour le moment, ça n'est qu'un test) en me basant sur le tutoriel suivant : Exemple de conception d'un site dynamique/.

Tout fonctionne à merveille fort heureusement.

Cependant !

Problème pour moi :

Étant donné que tout ce système est connecté à une base de données, je l'ai modifiée afin d'intégrer un champ URLPage dans lequel je met le nom de page que je souhaite afficher.

En effet, afin de permettre un bon référencement dans les moteurs de recherche, je ne souhaite pas voir d'adresses du type www.mondomaine.fr/index.php?id=5 mais plutôt quelque chose du genre www.mondomaine.fr/contactez-nous.php où, dans la base de données, id 5 correspond à URLPage contactez-nous (et ainsi de suite pour chaque page créée).

Maintenant... Mon problème est que, je ne sais absolument pas comment m'y prendre sachant que, à terme, le client final ne doit pas s'amuser à créer un fichier htaccess pour faire sa réécriture d'URL sachant qu'il n'y connait rien en développement. Tout doit donc ce faire de façon dynamique au niveau de la réécriture d'URL !! Smiley sweatdrop

Question :

Y a-t'il moyen de faire une réécriture d'URL dynamique sans passer par un fichier htaccess mais en récupérant les données à partir d'une base de données ? Smiley eek

Avez-vous un exemple de code PHP à me proposer ? Smiley confused

J'espère qu'une âme charitable saura m'aider sur le sujet Smiley confused

Merci d'avance pour tout Smiley cligne
Modifié par nikkyken (31 Aug 2009 - 11:07)
Hello,
J'avais un problème similaire pour mon mini CMS encore en cours de développement.

En tant que tel, je ne crois pas qu'on puisse lier des données provenant de la base aux règles de redirection apache. J'ai donc contourné le problème, de façon très simple.

D'abord, j'ai mis une règle de réécriture extrêmement générique de ce style :

RewriteRule ^([-a-zA-Z_0-9]+)$ afficher-page.php?nom=$1 [QSA,L]


J'ai choisi pour ma part d'avoir des URL sans extension. Rien ne t'interdit d'en ajouter une si tu préfères. Chacun ses goûts.
Attention : il faut bien concevoir la règle de façon à ce qu'on puisse toujours accéder aux fichiers .gif, .jpg, etc. et aux sous-dossiers... on se fait vite avoir. Dans mon exemple, on peut toujours car dès le moment où il y a un point rien n'est réécrit.

Comme tu peux voir, cette règle renvoie tout et n'importe quoi dans un script afficher-page.php avec un paramètre GET. Il suffit ensuite de se servir de ce paramètre pour récupérer la page à afficher en base, qui doit donc être accéder non plus par son identifiant mais par son URL.

Pour la petite histoire, mon mini CMS gère une arborescence complète de pages avec des URL du genre page/sous-page/sous-sous-page de cette façon sans aucun souci et le tout automatiquement.

C'est tout bête, mais il fallait y penser.
Bonjour QuentinC.

Merci pour cette réponse mais les redirections et moi-même, ça fait encore deux Smiley sweatdrop

Pourrais-tu me détailler un peut plus ton script "afficher-page.php" et m'expliquer un peut plus cette redirection ? Smiley confused

Si quelqu'un à une autre solution à me proposer, je suis prêt l'essayer également.

Merci de vos réponses. Smiley cligne
Modifié par nikkyken (28 Aug 2009 - 14:42)
Ouf !!! Ça y est, j'ai enfin réussi. Smiley sweatdrop

En fait, j'avais un problème dans mon fichier .htaccess. Etant chez 1&1 pour l'hébergement, il me fallait mettre RewriteBase / ce que j'avais fait mais, en fait, il fallait que je complète par le nom du répertoire dans lequel ce trouve mon site. Quel idiot je fait Smiley biggrin

Sinon, j'ai plus ou moins réussi à faire ma réécriture même si elle n'est pas encore à 100% comme je l'aimerais.

En effet, à l'heure actuelle j'ai réussi à faire ceci :

URL réelle : www.monsite.fr/index.php?id=5
URL réécrite : www.monsite.fr/5--contactez-moi

Pour ce faire, mon fichier .htaccess contient cette expression :
RewriteRule ^([0-9]+)--(.+)$ index.php?id=$1 [L]

Mais voici l'URL que j'aimerais : www.monsite.fr/contactez-moi

Pour faire simple, j'aimerais supprimer ce numéro qui est mon id dans ma base de données. Mais sans lui, comment faire pour récupérer les données de ma page ?? Smiley sweatdrop Smiley eek Là, je sèche car je ne peut rechercher les infos dans ma base qu'avec ce numéro d'id ! Smiley biggol

Donc si quelqu'un à un conseil à me donner à ce niveau maintenant, ce serait super !

Merci par avance Smiley confused
Hello,

nikkyken a écrit :
Pour faire simple, j'aimerais supprimer ce numéro qui est mon id dans ma base de données. Mais sans lui, comment faire pour récupérer les données de ma page ?
...
Donc si quelqu'un à un conseil à me donner à ce niveau maintenant, ce serait super !
Mon conseil : puisque tu as besoin de l'id... garde-le dans l'URL ! Smiley langue
Je suis convaincu qu'il n'y en a pas absolument besoin.

Pourquoi ne pas faire select ... where url = '...' ?
IL suffit d'ajouter un index de type unique et on se retrouve avec un truc presque aussi rapide, de toute façon il n'existe pas 2 pages avec la même URL.
Heyoan a écrit :
Hello,

Mon conseil : puisque tu as besoin de l'id... garde-le dans l'URL ! Smiley langue


Smiley biggol

QuentinC a écrit :
Je suis convaincu qu'il n'y en a pas absolument besoin.

Pourquoi ne pas faire select ... where url = '...' ?
IL suffit d'ajouter un index de type unique et on se retrouve avec un truc presque aussi rapide, de toute façon il n'existe pas 2 pages avec la même URL.


Merci QuentinC.

J'y avait pensé mais n'ai pas encore testé Smiley lol

Je pense que je vais essayer de modifier le code en conséquence car il semblerais qu'il ne me reste plus que cette solution Smiley sweatdrop

Encore merci pour vos participations.

Je clos le sujet Smiley smile