[RESOLU] Réécriture, redirection et R301

Nouveau WRInaute
Bonjour,

Voilà mon soucis :
J'aimerai effectuer une réécriture d'adresse de pages qui sont déja référencées.
Le but étant que l'utilisateur voit article-XX.html dans sa barre d'adresse au lieu de article.php?id=XX. (en gardant mon fichier nommé article.php, normal :) )

donc j'ai (naïvement) fait ça :

Code:
#Reecriture
RewriteRule ^article-(.*).html$ article.php?id=$1

#Redirection
RewriteRule ^article.php?id=(.*)$ article-$1.html [R=301]

La redirection marche mais je ne sais pas si le R301 est correcte et donc si je ne perdrai pas mon référencement.

J'ai fait un test de mon entête et j'ai comme réponse un simple HTTP/1.0 200 OK , devrais-je avoir un HTTP/1.1 301 ???

aussi, y-a t-il un moyen pour que si l'on tape www.monsite.fr/article.php?id=12 on tombe sur cette meme page mais avec l'url = www.monsite.fr/article-12.html ?

Qu'en pensez vous ?
 
WRInaute passionné
les paramètres ne marchent pas comme ca. il faut utiliser un truc du style :
Code:
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^article\.php$ article-%1.html [R=301]
 
Nouveau WRInaute
Déjà, Merci pour ta réponse ! :D
En effet il faut une condition,
le fait est que maintenant le R301 est pris en compte mais ne fait pas ce que je voudrais qu'elle fasse.
J'ai essayé ca :

Code:
#Reecriture
RewriteRule ^article-(.*).html$ article.php?id=$1

#Redirection
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^article\.php$ http://www.monsite.fr/article-%1.html [R=301]

pour l'adresse www.monsite.fr/article-xx.html, je suis redirigé vers www.monsite.fr/article-xx.html?id=xx

même redirection si je tape www.monsite.fr/article.php?id=xx
et pour les deux un petit message : "Redirection de page incorrecte" ...
 
WRInaute passionné
Je pense que quelque chose comme ca devrait marcher :
Code:
#Reecriture
RewriteRule ^article-(.*)\.html$ /article2.php?id=$1 [L]
#Redirection
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteCond %{REQUEST_URI} !html$
RewriteRule ^article\.php$ /article-%1.html? [R=301,L]
En renommant article.php en article2.php ca marche (sinon ca boucle et je ne comprend pas pourquoi car il y a un [L]).
 
Nouveau WRInaute
Je viens de tester ce bout de code et effectivement ca boucle.

La redirection marche au niveau de l'url, mais on arrive sur une page d'erreur "Redirection de page incorrecte"

La redirection a du coup beaucoup moins d'intéret si on renome article.php.

Tout comme toi je ne comprends pas pourquoi ca boucle par rapport au [L], mais il me semble que les conditions laissent passer article-xx.html , même si ça devrait s'arreter avant ... :?

Je continu de chercher de mon coté mais...
Moi pas bien comprendre...
Vous avoir idée ?
 
Nouveau WRInaute
Je me fait doucement aux principes de réecriture ... donc en fait le problème est clair maintenant (pour moi)

j'ai refait mon code ... c'est la même chose, mais bon, je le met quand même :
Code:
#Reecriture
RewriteRule article-([0-9]+)\.html$ article.php?id=$1 [L]
#Redirection
RewriteCond %{REQUEST_URI} ^.*\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^article\.php$ http://www.monsite.fr/article-%1.html? [R=301]

Le probleme viens exclusivement du fait que la lecture du .htaccess ne s'arrete pas apres :

Code:
RewriteRule article-([0-9]+)\.html$ article.php?id=$1 [L]

Deplus, la condition :
Code:
RewriteCond %{REQUEST_URI} !html$
ou
Code:
RewriteCond %{REQUEST_URI} ^.*\.php$
est, je crois, toujours valide car après la récriture (peut importe l'url tapé), c'est la version en ".php" qui arrive à la condition. Je fais fausse route ?

Ca ne résous pas pour autant le problème, mais au moins c'est plus clair...
 
Nouveau WRInaute
J'ai "bricolé" une solution ...
Comme on peux pas faire de compteur de boucle j'ai fait un marqueur qui dit "le lien est réécrit", voici donc le code qui marche :

Code:
#Reecriture
RewriteRule article-([0-9]+)\.html$ article.php5?id=$1&- [L]
#Redirection
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^article\.php5$ http://www.fundraisers.fr/test/article-%1\.html? [R=301]

J'ai rajouté &- juste avant le [L] ce qui fait que l'url rewrité ne répond plus la condition de redirection et ceci n'influx pas sur l'adresse de la page.

C'est pas très propre mais ça marche !!!

Merci en tout cas webmasterlamogere pour ton aide !

Je marque la discussion comme RESOLU, étant donné que ça marche.
Mais ce n'est pas une "vraie" solution à ce problème et vous pouvez d'ailleur toujours en proposers une !
 
Discussions similaires
Haut