[RESOLU] rewriting d'url : je croyais avoir compris

Eléphanteau du PHP | 13 Messages

12 janv. 2014, 13:18

Bonjour à tous,

Depuis quelques temps je me disais que ça serait pas mal de faire une de de rewriting pour mon site.

Comme j'avais un peu de temps ce matin, je me suis penchais dessus. Heureusement que j'avais du temps :?

J''ai lu plusieurs tutoriels, trouvé des exemples en veux-tu y en a…… et même des choses qui ressemblaient pile à ce que je voulais faire.

Mais………

Ça ne fonctionne pas.

je m'en remet donc aux bonnes âmes de ce forum.

Voici ce que j'ai fait :

Dans le code html j'ai mis le lien à "<a href="page-accueil">accueil</a>".

J'ai récupéré mon fichier htaccess.

Je l'ai ouvert pour y mettre les lignes de rewriting suivantes

Code : Tout sélectionner

RewriteEngine on RewriteRule ^page-(.*)$ index.php?page=$1
Ce que j'espérai, c'est que :
monSite.fr/page-accueil
affiche l'url :
monSite.fr/index.php?page=accueil

quelque chose qui ne me semblait pas compliqué, mais qui ne fonctionne absolument pas.

L'url afficher dans la barre d'adresse est bien "http://www.grafatom.fr/page-accueil", mais erreur 404 not found……

J'ai essayé avec plusieurs "formules" différentes :
sans les ^…$
avec ([a-z]+] à la place de (.*)
avec des drapeau [L], [QSA] ou encore [QSA,L]

merci d'avance pour l'aide.

Eléphanteau du PHP | 13 Messages

12 janv. 2014, 22:05

un petit up doublé d'un petit mieux :

Je viens de trouver peut-être, une explication.

Mon site est hébergé chez OVH et il semblerait que des "slash" soit nécessaire au bon fonctionnement de l'affaire.

oui, mais (il en faut bien…… de oui mais),

mon code :

Code : Tout sélectionner

Options +FollowSymLinks RewriteEngine on RewriteRule /page-(.*)$ /index.php?page=$1 [L]
Fonctionne


Et, lorsque j'ai ajouté le code suivant (une règle pour un autre cas en fait) :

Code : Tout sélectionner

RewriteRule /page-(.*)/(.*)$ /index.php?page=$1&pageBis=$2 [L]
La première règle fonctionne très bien, mais la seconde ne veut rien savoir.

Les slash seraient-ils vraiment l'explication ?? Et si oui, qu'est-ce qui est mauvais dans ma deuxième règle ?

Si quelqu'un à une idée, je le remercie d'avance.

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

12 janv. 2014, 22:43

met la seconde règle avant la première car la première match forcément aussi pour la seconde, tu coup il est préférable de tester la second si cela ne fonctionne pas tu passe à l'autre ;)


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

Eléphanteau du PHP | 13 Messages

13 janv. 2014, 13:33

Merci Moogli,

C'est beaucoup mieux

Il y a eu un petit moment de flottement car
La seconde règle (qui était devenue la première…) ne semblait respecter que le $2.

Ma pageBis s'affichait, mais seule, sans l'environnement dans lequel je l'aurais voulue include.

J'ai donc changé le

Code : Tout sélectionner

RewriteRule /page-(.*)/(.*)$ /index.php?page=$1&pageBis=$2 [L]
en

Code : Tout sélectionner

RewriteRule /page-(.*)-(.*)$ /index.php?page=$1&pageBis=$2 [L]
Le slash intermédiaire ne semble pas être supporté ou aurait-il fallu le noté Merci en tout cas pour cette aide qui me fut très préciause

Je rajoute donc "résolu" dans le titre (je ne sais pas si c'est comme ça qu'on fait ??)

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

13 janv. 2014, 22:23

nikel pour le résolus et le partage de la solution

merci

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