Ayant récemment switché mon ancien site vers Drupal, j’aimerais rediriger les anciens liens vers les nouveaux.
J’ai essayé de faire un RedirectPermanent grâce à un .htaccess de la manière suivante :
RedirectPermanent /pagesfixes.php ?page=1 http://www.monsite.com/chapitre-0-introduction
Le problème : le paramètre ?page=1 n’est pas pris en compte donc ça foire.
Quand je retire ce paramètre du .htaccess, l’adresse vers laquelle il me redirige donne http://www.monsite.com/chapitre-0-introduction ?q=pagesfixes.php. D’où sort ce paramètre q=pagesfixes.php qui fait tout foirer ?
Donc à mon avis je suis complètement à côté de la plaque, quelqu’un aurait-il solution à mon problème initial qui était de rediriger les anciens liens vers les nouveaux svp ? :p
Merci d’avance !
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Il est préférable d’utiliser les Réécritures d’URL :
voir : http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html http://httpd.apache.org/docs/2.2/misc/rewriteguide.html
Ne pas oublier d’utiliser le flag [G] pour que tes anciennes URL soient marquées comme obsolètes.
Bon courage.
alkahan
357
Hmm d’après ce que j’ai compris avec le flag [G] on tombe sur une page 410 sans redirection ? ce que je souhaiterais c’est que les anciennes redirigent vers les nouvelles URL.
Merci d’avoir pris le temps de répondre :)
Shamanix
4
exact ! un [R=301] sera beaucoup mieux :-)
alkahan
357
Merci, c’est déjà mieux !
Maintenant je sais rediriger une page grâce à RewriteRule ^pagesfixes.php http://www.monsite.com/introduction [QSA,L,R=301] et ça fonctionne.
Par contre je suis encore bloqué au niveau du paramètre. Comment puis-je faire pour rediriger pagesfixes.php ?page=2 vers http://www.monsite.com/premiere-page par exemple ?
Car de cette manière je tombe sur http://www.monsite.com/introduction ?page=2 et c’est pas ça que je veux.
Shamanix
4
Attention, il faut bien que tu comprennes comment est définit une url : dans http://www.monsite.com/introduction ?page=2 : http:// est le protocole monsite.com est le domaine introduction est le chemin et ?page=2 est une chaine d’argument.
Ceci étant dit, page=2 sera donc disponible via la variable QUERY_STRING. Pour rediriger pagesfixes.php ?page=2, il faut que tu crées une condition sur le nom du script ET sur le QUERY_STRING.
alkahan
357
Ca marche ! avec ce genre de commande :
RewriteCond %{QUERY_STRING} ^page=2$ RewriteRule ^pagesfixes.php http://www.monsite.com/premiere-page [QSA,L,R=301]
Il reste un petit détail pas très important : il continue à m’afficher le QUERY_STRING initial après le redirect, par exemple :
http://www.monsite.com/premiere-page ?page=2
Bon c’est pas très grave car ça n’empêche pas la page de s’afficher mais si y a un moyen simple pour le retirer je suis preneur.
Shamanix
4