[RESOLU] Url Rewritting

Despicable
Invité n'ayant pas de compte PHPfrance

09 sept. 2013, 19:47

Bonjour toute le monde,
Je viens vous redemander aide et conseil.

J'utilise le URL writting pour avoir des url propres, jusqu' ici aucune problèmes.
Tout d'abord, j'ai une page "details_objets.php". J’accède a cette page avec le lien suivant :
<?php echo"<a  class='btn' href=\"".$Mon_Resultat['[color=#FF0000]Id_Objets[/color]'].".html"."\">En savoir +</a>";?>
Cela marche très bien.
Dans mon HT accessn j'ai cette réécriture

Code : Tout sélectionner

RewriteEngine On RewriteRule ^([^/]*)\.html$ /details_objets.php?Ressources=$1 [L]
Cependant, j'ai un petit problème.
Je voudrais aussi faire de l'URL Writtinf pour des autres pages
Donc j'ai crée une page "details.php" avec comme lien pour y accéder :
<?php echo"<a  class='btn' href=\"".$Mon_Resultat['[color=#FF0000]Id_Articles[/color]'].".html"."\">En savoir +</a>";?>
Dans mon ht access je rajoute donc une ligne pour la réécriture ce qui le donne comme HTACCESS Final

Code : Tout sélectionner

RewriteEngine On RewriteRule ^([^/]*)\.html$ /details_objets.php?Ressources=$1 [L] RewriteRule ^([^/]*)\.html$ /details.php?Ressources=$1 [L]
Je me doute que mon problème provient de l'HT ACCESS, et a vrai dire je suis un peu pomé, si vous pouviez m'aiguiller sur une solution
Cordialement,
Despicable

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 sept. 2013, 10:09

Salut, tu as deux masques identique pour deux règles différents cela ne peux pas fonctionner.

Je te conseil d'ajouter un bout de texte devant.
Par exemple
objet-xxx.html.
C'est parlant le masque peux être différents suivants le type de chose que tu souhaite afficher ;)


@+
Il en faut peu pour être heureux ......

Despicable
Invité n'ayant pas de compte PHPfrance

10 sept. 2013, 16:20

Bonjour,

Pourrais tu me donner un exemple stp, par exemple si je veux utiliser "Id_Articles" et "Titre_Articles"
Quelle serait le HT access, et quel serait le lien pour y parvenir.

Merci,
Despicable

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 sept. 2013, 16:56

je vais plutôt t'expliquer ce que tu as pour que tu comprenne bien pourquoi ce que tu as fait ne peux fonctionner.

RewriteRule ^([^/]*)\.html$ /details_objets.php?Ressources=$1 [L]

- RewriteRule : déclaration d'une règle de ré écriture
- ^([^/]*)\.html$ expression régulière à satisfaire pour "activer" la règle
- /details_objets.php?Ressources=$1 : url à utiliser lorsque la règle est activée.
- [L] : doc => on s'arrête après l’exécution de cette règle


explication de l'expression régulière
^([^/]*)\.html => n'importe quoi qui finit par .html

donc ton 1er masque est "toujours" respecté et exécuté.

ce qu'il faut faire : différencier les différentes règle de réécriture.
dans ton cas tu peux te baser sur l'expression régulière (dans tous les cas d'ailleurs) sauf que la l'expression régulière pour l'id c'est ne contient que dès chiffres et pour le titre celle que tu as déjà fera l'affaire.
Il faut penser mettre la règle de réécriture pour les id avant la règle pour les titres.

@+
Il en faut peu pour être heureux ......

Despicable
Invité n'ayant pas de compte PHPfrance

10 sept. 2013, 17:02

Effectivement j'ai rajouté un autre paramètre, cela me faisait encore un conflit. J'ai donc modifier l'extension pour éviter cela. (J'en ai pas mis)
Je sais que cela est du bidouillage, mais je met le code pour les prochains ;)

Code : Tout sélectionner

RewriteEngine On RewriteRule ^([^/]*)\.$ /details.php?id=$1&titre=$2 [L] RewriteRule ^([^/]*)\.html$ /details_objets.php?Ressources=$1 [L]
Puis mon lien :
<li><?php echo"<a href=\"".$Mon_Resultat['Id_Articles']."-".$Mon_Resultat['Titre_Articles']."."."\">".$Mon_Resultat['Titre_Articles']."</a>";?></li>	
Biensur c'est que du bidouillage, mais ça évite le conflit pour ma part ;)
Encore merci à Moogli
A plus tard

Despicable
Invité n'ayant pas de compte PHPfrance

10 sept. 2013, 17:04

merci Moogli,
J'ai réussi un peu a modifier, pour arriver au résultat soouhaité.
Merci de tes explications détaillés ;)

A plus tard

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 sept. 2013, 22:05

Modération :
Puisque ta question est résolue, je l'indique en cliquant sur le bouton "Mettre le sujet en tant que Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert situé en haut de la page à côté du titre, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Il en faut peu pour être heureux ......