Redirection d'une url rewrit vers nouvelle url rewrit

WRInaute passionné
Bonsoir à tous,
Je cherche à rediriger via htaccess mes anciennes url rewritées (pas mal sont référencées) vers une nouvelle url rewritée.

En fait le rewrit fonctionne mais maintenant je dois rediriger les url référencées dans les moteurs vers les bonnes avec la nouvelle règle (oula pas très clair moi)

Voici mon ancienne règle de rewriting

Code:
RewriteRule ^site-(.*).html$ /infos.php?id=$1 [L]

Et voici la nouvelle

Code:
RewriteRule -s([0-9]*)\.html$  /page_site.php?id=$1 [L]

Quelle formule employer pour obtenir une redirection 301 des anciennes vers les nouvelles et que cela soit transparent pour les visiteurs venant des moteurs ?
Merci
 
WRInaute accro
Si tu passes la première en
Code:
RewriteRule ^site-(.*).html$ -s($1).html [QSA,L,R=301]
, ça donne quoi ?

PS: sinon, dans index.php, une vérification d'URL:

Code:
if($id)
 {
 if($_SERVER['REQUEST_URI'] != '-s'.$id.'.html)
  {
  header("Status: 301 Moved Permanently", false, 301);
  header("Location: http://".$_SERVER['HTTP_HOST']."/-s".$id.".html");
	exit;
  }
 }

...peut aider également.
 
WRInaute passionné
Pour le moment la première ne fonctionne pas car il y a une deuxième variable qui entre en jeu qui n'est pas dans ma BDD mais transformée en php (une partie du titre de la page).

Pour la seconde j'obtiens des url avec tout le chemin vers la racine de mon serveur chez 1&1 dedans ???

Je fais des tests en ce moment pour trouver la bonne combinaison.

bhamp0 (sur le chat) m'a conseillé de passer par un fichier supplémentaire (redirection.php) pour éviter le duplicate content.

Ce qui donne dans le htaccess
RewriteRule ^site-([0-9]+).html$ redirection.php?id=$1 [R=301,L]

Et là ou je galère c'est pour pondre le code contenu dans le fichier redirection.php

ça doit être quelque chose comme ça

Code:
<?php
$lk = connection_BD(); // Connection

// Recherche des variables dans la BDD
$sql = "SELECT * FROM $T_sites";
//envoi de la requete
$res = send_sql($sql,"trouver les variables");

while($infos = mysql_fetch_array($res))
{
   $id = $infos['id'];
   $titre = $infos['titre'];
   $url_du_site_rw = id_to_url_page_site($infos['id'],$infos['titre']);

{
  header("Status: 301 Moved Permanently", false, 301);
  header("Location: http://".$_SERVER['HTTP_HOST']."/".$url_du_site_rw."-s".$id.".html");
   exit;
  } 
?>

Mais rien à faire ça passe pas ???
ça doit être bourré d'erreur donc n'hésitez pas à les signaler ;)
 
WRInaute discret
Code:
<?php
// include pour la connexion
include("data_bd_annuaire.php");

// include pour la fonction id_to_url_page_site()
include("functions.php");

// Connexion
$lk = connection_BD();

// on vérifier la variable id
if(empty($_GET["id"])) exit;
$id = $_GET["id"];

// Recherche des variables dans la BDD
$sql = "SELECT titre FROM $T_sites WHERE id = '".$id."'";

//envoi de la requete
$res = send_sql($sql, "trouver le titre");

// on récupère le titre "brut"
$row = mysql_fetch_assoc($res);

// on le modifie à notre sauce
$url_du_site_rw = id_to_url_page_site($id, $row["titre"]);

// on envoie la sauce
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://".$_SERVER['HTTP_HOST']."/".$url_du_site_rw);
exit;
?>
 
WRInaute passionné
Un très grand merci à Bh@Mp0 qui m'a donné un grand coup de mains sur ce coup là (le code fonctionne à la perfection) :D
=> j'aime bien les commentaires du code alors je les ai laissé^^

Et évidemment un grand merci aussi au maître Jedi Hawk qui a indiqué la voie à suivre au jeune padawan que je suis...

@Bh@Mp0 : pour te remercier, si tu as besoin de BL pour un de tes sites, hésites pas ce sera avec plaisir (url et anchor par MP)...pas des sites de fesse hein^^

@Hawk : je t'aurais bien proposé la même chose mais tu es déjà sur ma home alors grand merci à toi.
 
Discussions similaires
Haut