Ancienne URL rewritée vers nouvelle URL rewritée avec 301?

WRInaute occasionnel
Bonjour !

J'ai enfin réussi à faire ce que je voulais de mon url. Seulemnt il me reste un dernier problème.

L'adresse réelle d'une news est de la forme :
index.php?shownews=1&newsid=2

auparavant mon URL rewriting donnait :
actualite-2.html

à présent elle donne :
actualite-2-titre-de-la-news.html (l'url réelle étant à présent index.php?shownews=1&newsid=2&title=3)

Sachant que toutes mes news de la forme actualite-2.html sont référencées dans GG, comment faire pour rediriger ces anciennes url (déja rewritées) vers les nouvelles avec une redirection 301 svp??
 
WRInaute accro
en faisant une réécriture
RewriteRule ^article-([0-9]+)\.html$ transfert.php?id_art=$1 [L]
et ensuite dans le transfert.php, appeler la BdD pour remplir le reste de l'url et renvoyer cette url avec un header 301 en php
 
WRInaute occasionnel
oui si je dois les taper manuellement :)
je suis en train de faire ce que tu m'as dis précédemment. merci ;)
 
WRInaute passionné
Plus simple je pense c'est de tester l'URI qui a été appelé dans la page, si c'est l'ancienne, 301=>vers la nouvelle... (fonction header() en php ;-) )

EDIT: Déso Leonick, je crois que c'est un peu le sens de ta réponse, mais à la première lecture j'avais mal compris :lol:
 
WRInaute occasionnel
j'ai essayé de faire comme vous m'avez dit, mais ça me met une erreur 404.

code du transfert.php
Code:
<?php

$newsid = $_GET['newsid'];

$db = mysql_connect($host, $user, $pwd)  or die('Erreur de connexion :'.mysql_error());

mysql_select_db($dbname,$db)  or die('Erreur de selection :'.mysql_error());

$req = "SELECT titre FROM news WHERE id='" . $newsid . "'";

$res = mysql_query($req) or die(mysql_error());

$news = mysql_fetch_assoc($res);

$titrerewrite = $news['subject'];

header("Location: http://www.site.com/actualite-" . $newsid . "-" . $titrerewrite . ".html");

mysql_close();
?>


code du htaccess (juste la ligne concernee) :
Code:
RewriteRule ^actualite-([0-9]+)\.html$ transfert.php?newsid=$1 [L]


EDIT : Bon sang quel idiot je suis !!!
j'ai mis la ligne du htaccess avant les autres lignes de redirection c'est pour ça !!! :D

merci pour vos réponses.
 
WRInaute accro
un p'tit header("Status: 301 Moved Permanently");
avant l'autre header.
Ensuite, il faut voir à la main ce que donne l'url réécrite pour vérifier qu'elle n'est pas sensée donner du 404
 
WRInaute occasionnel
Merci Leonick pour ton aide. Je ne savais pas qu'il fallait mettre cette ligne en plus. c'est fait à présent :)
 
Discussions similaires
Haut