Redirection 301 : problème de syntaxe

WRInaute occasionnel
Salut les wrinautes,

Je voudrais faire une redirection 301 des adresses du type :
-http://www.mathforu.com/index.php?name=News&file=article&sid=89
vers
-http://www.mathforu.com/cours-89.html
(le numéro change)

J'ai mis ça dans mon .htaccess
Code:
RewriteRule ^index\.php?name=News&file=article&sid=([0-9]+)$ http://www.mathforu.com/cours-$1.html [L,NC,R=301]
mais cela n'a aucun effet ...

Quelqu'un saurait-il me donner ou m'expliquer la bonne syntaxe ?
 
WRInaute accro
Perso je ferais la redirection via php avec un truc comme ça:

Code:
<?php 
if($_GET['sid'])
	{ $ctrl_sid = $_GET['sid'];	}

if($_SERVER['REQUEST_URI' != '/cours-'.$ctrl_sid.'.html')
	{
	header("Status: 301 Moved Permanently", false, 301);
	header("Location: http://".$_SERVER['HTTP_HOST']."/cours-".$ctrl_sid.".html");
	exit;
	}
 ?>
 
WRInaute passionné
pour les url avec paramètre il faut faire comme ca :
Code:
RewriteCond %{QUERY_STRING} ^name=News&file=article&sid=([0-9]+)$
RewriteRule ^index\.php$   /cours-%1.html?  [L,R=301]
 
WRInaute occasionnel
Merci pour vos réponses. J'ai adopté celle du .htaccess : un simple copier/coller et ça fonctionne déjà ! (j'ai appris quelquechose pour les url avec paramètres).

Hawk > je suis curieux, pourquoi préfères-tu la redirection php ?
 
WRInaute passionné
moi aussi je préfère la version php : ca gère les changements de descriptions que l'on retrouve dans l'url, les problèmes de duplicate content à cause du www. facultatif, les appels directe de la page non réécrite...

Si tu inverses l'ordre de tes paramètres ca ne marche plus!
 
WRInaute accro
Pourquoi faire des redirections en php ? parceque c'est plus simple et ca va pas plus loin je crois.

Un exemple que je ne vais pas chercher tres loin:
le code ci-dessus en .htaccess de webmasterlamogere ne marchera pas sur tous les serveurs alors que celui en php de HawkEye marchera trés bien sur tous les serveurs.

Cela facilite grandement la préférence php
 
Nouveau WRInaute
titiplanti a dit:
Salut les wrinautes,

Je voudrais faire une redirection 301 des adresses du type :
-http://www.mathforu.com/index.php?name=News&file=article&sid=89
vers
-http://www.mathforu.com/cours-89.html
(le numéro change)

J'ai mis ça dans mon .htaccess
Code:
RewriteRule ^index\.php?name=News&file=article&sid=([0-9]+)$ http://www.mathforu.com/cours-$1.html [L,NC,R=301]
mais cela n'a aucun effet ...

Quelqu'un saurait-il me donner ou m'expliquer la bonne syntaxe ?

essaye plutot :

RewriteRule ^cours-([0-9]*).html$ index.php?name=News&file=article&id=$1 [R=301]

:)
 
WRInaute accro
relis le post depuis le debut, une solution .htaccess a déjà été donnée.
...la solution que tu proposes est une réécriture alors qu'il s'agit de redirection.
 
Discussions similaires
Haut