[problème] probleme de récriture dynamique

y.berges

Nouveau WRInaute
Salut a tous j'ai essayer de bien lire le tuto de webrankinfo
voici mon htaccess
Code:
# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

# test d'écriture :
RewriteRule ^essai\.html$ /essai.php

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /article2.php?idsouscat=$1&idsection=$2&idcat=$3&idarticle=$4 [L]
RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /article.php?idsouscat=$1&idsection=$2&idcat=$3 [L]
RewriteRule ^index\.html$ /index.php
RewriteRule ^exposition\.html$ /menu.php?idsection=1

alors mon RewriteRule ^essai\.html$ /essai.php fonctionne !
mais le reste ne réagis absolument pas ....
Code:
RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /article2.php?idsouscat=$1&idsection=$2&idcat=$3&idarticle=$4 [L]
c'est cette url
http://www.lebbb.org/article2.php?idsou ... rticle=557

ca c'est pour réécrire l'index.php
Code:
RewriteRule ^index\.html$ /index.php

et ca c'est pour certaines pages
Code:
RewriteRule ^exposition\.html$ /menu.php?idsection=1
ici http://www.lebbb.org/menu.php?idsection=1

pourquoi j'ai qu'une ecriture qui marche qu'ai je loupé !
Merci d'avance
 

y.berges

Nouveau WRInaute
de maniere dynamique c'est pas possible ? car mon site est dynamique je peu genere des pages a loisirs
j'aimerais bien que mes url suivent cette optimisation !
Merci pour tes réponses
 

Toma

WRInaute discret
Tu confonds ré-écriture et redirection.

Pour le moment dans ton fichier .htaccess tu fais des ré-écritures. Et contrairement à ce que leur nom pourrait laisser croire ça ne change pas l'adresse dans la barre du navigateur. Ça dit juste à ton serveur de ne pas aller chercher (par exemple)
Code:
http://www.lebbb.org/article-1-1-15-557.html
mais
Code:
http://www.lebbb.org/article2.php?idsouscat=1&idsection=1&idcat=15&idarticle=557
Cette ré-écriture est invisible pour l'utilisateur. L'adresse du navigateur reste la même, elle est juste ré-écrite en interne.


Maintenant, toi ce que tu voudrais en plus c'est que les gens qui tapent l'ancienne adresse
Code:
http://www.lebbb.org/article2.php?idsouscat=1&idsection=1&idcat=15&idarticle=557
ne voient plus cette adresse dans leur navigateur mais la nouvelle :
Code:
http://www.lebbb.org/article-1-1-15-557.html
Pour cela il faut faire une redirection avec ton htaccess (ou en php) en utilisant toujour une règle de ré-écriture avec la deuxième url en entier (avec le http://) et avec [R=301,L] à la fin de la ligne.
Par exemple :
Code:
RewriteRule ^article2.php\?idsouscat=([0-9]+)&idsection=([0-9]+)&idcat=([0-9]+)&idarticle=([0-9]+) http://www.lebbb.org/article-$1-$2-$3-$3\.html$ [R=301,L]
(cette ligne ne doit pas être correcte je suis pas très expérimenté en expressions rationnelles, mais tu dois voir l'idée)
Ici, comme la deuxième url est écrite en entier, l'ancienne adresse est remplacée par la nouvelle dans le navigateur. Et le code R=301 dit au navigateur qu'il y a bien redirection.


Mais il y a maintenant un gros problème car tu fais une boucle infinie sur ton serveur avec les ré-écritures et les redirections.
Pour éviter ça, il ne faut pas utiliser les anciens noms de variables dans tes ré-écritures. Par exemple pour les ré-écritures tu pourrais mettre :
Code:
RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /article2.php?idsouscat_new=$1&idsection_new=$2&idcat_new=$3&idarticle_new=$4 [L]
Comme ça tu casses la boucle infinie. Bien sur, il faut que tu changes ton code php pour qu'il attende les nouveaux noms de variables et plus les anciens.


Pour résumer :
Code:
http://www.lebbb.org/article2.php?idsouscat=1&idsection=1&idcat=15&idarticle=557
est redirigé vers
Code:
http://www.lebbb.org/article-1-1-15-557.html
qui est ré-écrit en
Code:
http://www.lebbb.org/article2.php?idsouscat_new=1&idsection_new=1&idcat_new=15&idarticle_new=557
Et ton fichier article2.php gère les variables truc_new et plus les variables truc.

Enfin, et même si ce n'est pas indispensable il faut que tu mettes les nouvelles (et belles) adresses dans les liens internes de ton site (pour éviter au serveur des redirections inutiles).

J'espère ne pas avoir dit trop de conneries.
 

Discussions similaires

Haut