Probleme de rewrite pour redirection 301

Nouveau WRInaute
Bonjour,
je suis en train de mettre à jour un site Internet qui date déjà. A l'époque, je n'utilisais pas d'URL Rewriting et les adresses des pages ressemblaient à ceci:
Code:
http://www.monsite.com/serie.php?s=24
Avec la nouvelle version, les URL ressembleront à ceci
Code:
http://www.monsite.com/photographie/nom-de-la-serie-24/
J'aimerais faire une redirection 301 de l'ancienne adresse vers la nouvelle.

J'ai essayé plusieurs règles mais rien ne fonctionne. D'après ce que j'ai pu trouver sur les forums, je devrais essayer ceci
Code:
RewriteRule   serie.php?s=([0-9]+)   /photographie/un-texte-$1 [R=301]
mais malheureusement, la tentative n'est pas concluante.
Ce qui s'en rapproche le plus est ceci:
Code:
RewriteRule   serie.php   /photographie/ [R=301]
ce qui a pour gros désavantage de perdre le No de la série. Ce n'est pas tout, en plus, cela m'affiche
Code:
http://www.monsite.com/photographie/?s=1
dans la barre d'adresse. Je ne comprends pas pourquoi je retrouve ?s=1 alors que je n'ai pas appelé la variable.

Comme complément d'information, voici ce que j'ai dans mon .htaccess, avant ma RewriteRule:
Code:
Options +FollowSymlinks
RewriteEngine on
Options -MultiViews
Je fais les tests en local avec Wampserver.

D'avance, merci pour l'aide que vous pourrez m'apporter.
 
WRInaute accro
Bonjour
Si tes noms de séries sont variables (ce qui est à mon avis le cas), tu ne pourras pas passer par du .htaccess pour faire tes redirections, ou alors tu feras autant de lignes qu'il existe de variantes possibles.
Mon conseil : Passe plutôt par un script PHP qui recrée l'URL et qui redirige vers elle si ce n'est pas cette nouvelle URL qui est appelée, ce sera beaucoup plus simple.
 
Nouveau WRInaute
Salut,
merci pour ton commentaire. Entre temps, j'ai trouvé une solution.

1. Je fais un rewriting pour renvoyer toutes les pages qui correspondent à un "pattern" serie.php?s=... vers une autre page
Code:
RewriteRule   ^serie.php(.*)$   /redirection_301_serie.php  [L]
2. Sur ma deuxième page (redirection_301_serie.php), je récupère la variable s.
3. J'utilise la variable s pour vérifier si ma série photo est active.
3a. C'est le cas, je fais une redirection vers la nouvelle page
Code:
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.monsite.com/photo/" . str_url($element->nom_serie) . "-" . $_GET['s'] . "/");
exit();
3b. La série n'existe plus, je renvoie vers la page qui contient la liste des galeries
Code:
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.monsite.com/photo/");
exit();
J'aurais pu éviter l'étape 1 et faire directement le test sur une page appelées serie.php

Antonio
 
Discussions similaires
Haut