Le Rewrite ok mais Rewrite + R301.

WRInaute discret
Bonjour

Alors voilà mon problème. Après quelques nuits blanches, j'ai reussi à faire le rewrite d'une partie de mon site. Je sais pas si c'est la meilleure façon (j'ai bien lu et relu de nombreuses pages et forums, mais j'ai pas tout saisi).

Je vous donne le code que j'employe

Code:
RewriteRule ^accouchement.html$ /accouchement.php
RewriteRule ^accouchement-([0-9]+).html$ /accouchement.php?op=viewarticle&artid=$1 [NC,L]
RewriteRule ^accouchement-([0-9]+)-([0-9]+).html$ /accouchement.php?op=viewarticle&artid=$1&page=$2 [NC,L]
RewriteRule ^accouchement-imprimer-([0-9]+).html$ /accouchement.php?op=printpage&artid=$1 [NC,L]

Deux choses :

Je voudrais qu'en plus du rewrite, il y ait un redirection r=301, afin de pas me retrouver avec du duplicate content et "facher google". Et là ça marche pas.

J'ai bien essayé RewriteRule oldpage.php newpage.html, mais quand je n'ai pas une erreur 500, c une erreur 404 qui apparait et en général, ça plante même le reste des rewrite.
J'ai essayé
Code:
RewriteRule accouchement.php accouchement.html
et ça passe pas
En mettant le chemin complet avec http non plus...
Autre chose: pour ameliorer le référencement, j'ai utilisé une page .php par grand theme de mon site. Du coup, j'ai une dizaine de pages differents, qui ont toutes la même structure, mais qui vont toutes nécessiter 4-5 lignes de code pour le rewrtite. Il y a pas moyen de simplifier les choses et obtenir un fichier .htaccess de dimensions "reduites"?

Si vous pouviez me donner un coup de main, vous m'éviteriez d'y passer de longues nuits blanches encore :)
 
WRInaute passionné
1) :wink:
Code:
RewriteRule ^accouchement\.html$ /accouchement.php [R=301]
RewriteRule ^accouchement-([0-9]+)\.html$ /accouchement.php?op=viewarticle&artid=$1 [NC,L] [R=301]
RewriteRule ^accouchement-([0-9]+)-([0-9]+)\.html$ /accouchement.php?op=viewarticle&artid=$1&page=$2 [NC,L,R=301]
RewriteRule ^accouchement-imprimer-([0-9]+)\.html$ /accouchement.php?op=printpage&artid=$1 [NC,L,R=301]

2) donne le titre de toutes les pages, ça peut aider.
Un truc du genre
Code:
RewriteRule ^([a-zA-Z ]+)\.html$ /$1.php [R=301]

pourrait marcher(première regle)....
 
WRInaute discret
Meri à toi (fésolé de pas revenir plus vite, mais Madame préféré que je m'occupe des bébé en chair et en os plutôt que de mon bébé virtuel :)

Alors, j'ai essayé avec ta ligne de code, mais j'ai toujours une errur 404

J'ai essayé

Code:
RewriteRule ^humeurs.php?op=viewarticle&artid=([0-9]+)$ /humeurs-$1.html [R=301]

J'ai plus d'erreur 404, mais la page n'est pas redirigée vers la nouvelle. Amoins que je n'ai rien compris au fonctionnement de la chose. SI la redirection marche, c'est bien humeurs-$1.html et non pas humeurs.php?op=viewarticle&artid= qui doit apparaitre dena la barred d'adress de IE, juste? J'ai essayé de jetter un coup d'oeil au code source généré, mais nullepart il apparait une redirection... COmment savoir si ça marche avec certitude?
L'outil de WRI me donne cet header là :
HTTP/1.1 200 OKDate: Sun, 09 Jan 2005 10:21:30 GMTServer: Apache/1.3.33 (Unix) PHP/4.3.9X-Powered-By: PHP/4.3.9Connection: closeContent-Type: text/html

Pour le titre j'ay avais pensé et je vais m'y mettre aussi (il faut que je trouve le moyen de passer la variable sans trop de problème). Mais j'osais pas demander tout le code en même temps :)
 
WRInaute discret
Alors, je progresse...
Avec
Code:
RedirectPermanent /humeurs.php http://www.jeunepapa.com/humeurs.html
idem avec

Code:
RedirectMatch 301 /humeurs.php http://www.jeunepapa.com/humeurs.html

L'outil wri me donen des infos qui me parraissent correctes

HTTP/1.1 301 Moved PermanentlyDate: Sun, 09 Jan 2005 11:06:56 GMTServer: Apache/1.3.33 (Unix) PHP/4.3.9Location: -www.jeunepapa.com/humeurs.htmlConnection: closeContent-Type: text/html; charset=iso-8859-1

Mais cette nouvelle addresse retourne une errur 404 :(
En fait j'ai l'impression, vu le temps de réponse, que ça part en boucle, et que ça ne donen une 404 par "timeout"

Une idée?
 
WRInaute passionné
Oublie mon premier message.... :oops:

jeunepapa a dit:
Je voudrais qu'en plus du rewrite, il y ait un redirection r=301, afin de pas me retrouver avec du duplicate content et "facher google". Et là ça marche pas.

Je comprends pas trop...
T'as des pages du type :

humeurs.php?op=viewarticle&artid=xxx

que te veux rewriter en :

/humeurs-xxx.html

il faut faire

Code:
RewriteRule ^humeurs-([0-9]+)\.html$ /humeurs.php?op=viewarticle&artid=$1 [QSA,L]

L pour dire qu'aprés il faut pas réécrire...
QSA pour transmettre les eventuelles variables collées à l'url

sans mettre de 301.
Ce processus de rewrite est totalement transparent pour le client. Il est effectué sur le serveur.

(pas de redirection, tu dois avoir un 200 ok).

Si j'ai bien compris ton problème, google connait tes anciennes pages et tu voudrais les reditiger vers les nouvelles en 301...

il faut faire :

Code:
RewriteRule ^humeurs.php?op=viewarticle&artid=([0-9]+)$ /humeurs-$1.html [R=301,L]

R=301 pour la redirection
L pour dire qu'il ne faut pas réécrire apres..

Visivlement tu réécrivais une url en l'autre en l'une, en l'autre....(la boucle infrenale quoi....
 
WRInaute discret
Ca marche toujours pas :(
A n'y rien comrpendre
Bon, la dodo, demain je regarderais ça à nouveau.
En tout cas merci de ton aide
 
Discussions similaires
Haut