Règle globale avant de poursuivre les autres réécritures ?

  • Auteur de la discussion Auteur de la discussion lekeno
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Je me suis enfin mis à l'url rewriting !
J'ai donc commencé par une petite partie de mon site.
Il s'agit de la partie "archives".

Avant les adresses étaient de la forme
Code:
/archives/archives.php?date=aaaammjj pour le mois mm de l'année aaaa (la partie jour 'jj' ne sert à rien).

Maintenant elles sont comme suit :
Code:
/archives/aaaa/mm/

Ce qui est effectivement bien plus simple.
Les anciennes formes sont redirigées vers la nouvelle avec un 301 pour faire plaisir à Google entre autres.

Maintenant il me reste le paramètre 'langue' optionel :
Code:
/archives/aaaa/mm/?langue=jp_jp

J'aimerai faire quelquechose comme :
Code:
/jp/archives/aaaa/mm/

Ce qui n'a rien de difficile en soit mais j'aimerai le faire pour toutes les autre urls en une seule fois apres une premiere regle de reecriture.
Les autres pages seront réécrites de cette façon :
Code:
/photos/photo.php?id=20050201.1000.1.jpg&langue=jp_jp
==> /photos/2005/02/01.1000.1/?langue=jp_jp

/photos/photo.php?id=20040201.1.jpg&langue=jp_jp
==> /photos/2004/02/01.1/?langue=jp_jp

/photos/photo.php?id=20040201.jpg&langue=jp_jp
==> /photos/2004/02/01/?langue=jp_jp

etc... pour les autres adresses du même style et finalement une autre règle pour mettre en tête la langue :
Code:
/jp/photos/2005/02/....
/jp/videos/2005/...


Pour l'instant mon fichier htaccess ressemble à ça :

Code:
RewriteEngine on
RewriteRule ^archives/([0-9]{4,4})/([0-9]{2,2})/$                       /archives/archives.php?rew=1&date=$1$201  [QSA,L]

RewriteCond %{QUERY_STRING} ^date=([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})$ [NC]
RewriteRule ^archives/archives\.php$               /archives/%1/%2/? [NC,L,R=301]

RewriteCond %{QUERY_STRING} ^date=([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})&langue=(.*)$ [NC]
RewriteRule ^archives/archives\.php$               /archives/%1/%2/?langue=%4 [NC,L,R=301]


#pas encore en place mais pour les photos je pense faire :
RewriteRule ^photos/([0-9]{4,4})/([0-9]{2,2})/([0-9]{2,2})(\.[0-9]{4,4})?(\.[0-9]*)?/$                       /photos/photo.php?rew=1&id=$1$2$3$4$5  [QSA,L]

RewriteCond %{QUERY_STRING} ^id=([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})(\.[0-9]{4,4})?(\.[0-9]*)?$ [NC]
RewriteRule ^photos/photo\.php$               /photos/%1/%2/%3%4%5/? [NC,L,R=301]

RewriteCond %{QUERY_STRING} ^id=([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})(\.[0-9]{4,4})?(\.[0-9]*)?&langue=(.*)$ [NC]
RewriteRule ^photos/photo\.php$               /photos/%1/%2/%3%4%5/?langue=%4 [NC,L,R=301]

Je pense à une première régle qui gére le paramètre lang mais qui ne termine pas ? Comment cela s'écrit-il ?


Merci.
 
WRInaute occasionnel
Il suffit de ne pas mettre de L (arrêt du rewriting) dans les flags. Ca devrait ressembler à
Code:
RewriteEngine on
RewriteRule ^jp/(.*)$ $1?langue=jp
RewriteRule ^archives/([0-9]{4,4})/([0-9]{2,2})/$ /archives/archives.php?rew=1&date=$1$201  [QSA,L]
 
Nouveau WRInaute
J'ai un doute sur mes règles 301 dans le .htaccess pour dire à Google "les adresses que tu connaissais ont changés" :

Code:
RewriteCond %{QUERY_STRING} ^date=([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})$ [NC]
RewriteRule ^archives/archives\.php$               /archives/%1/%2/? [NC,L,R=301]
...

Est ce que cela fonctionne, ou faut il plutôt lui retourner des 404 ?
Il a encore les anciennes adresses mais il me semble qu'il n'a pas encore revisité les archives donc je ne sais pas...

Quelqu'un a t'il déjà eu affaire à ce problème ?
 
WRInaute discret
Si tu lui met une erreur 404, il va pas apprécié: surtout que c'est pas ton cas, la page est juste redirigé.

Il faut un certain temps aux crawlers pour tenir compte de tous les changements - be patient !
 
Nouveau WRInaute
Merci.
Je vais patienter.
En meme temps, j'appate le Google avec un lien "archive" au nouveau format sur la page principale :-D

On verra bien si il mord plus vite comme ça !
 
Discussions similaires
Haut