Redirection permanente apres url rewriting

stone66

WRInaute discret
Bonjour,

j'ai cherché partout et je n'ai pas trouvé :?

L'url rewriting c'est bien mais du coup une page est accessible par 2 url différentes !!! ( ou alors j'ai loupé une étape ),
exemple me concernant :

j'ai une règle dans mon fichier htaccess :
Code:
RewriteRule ^citations-amour-([0-9-]+)-([0-9-]+).html$ /index.php?page=modules/page_proverbe&cat=0&num=$2 [L]
cette règle dit que je peux taper comme url :
Code:
/citations-amour-0-0.html
ce qui est en effet plus convivial que :
Code:
index.php?page=modules/page_proverbe&cat=0&num=0

bon jusque là tout ce passe bien sauf que du coup je peux acceder à la même page par les 2 urls ce qui (dite moi si je me trompe) en terme de referencement n'est pas terrible car cela peut etre vu comme du duplicate content.

bon bref, comment faire une redirection 301 afin qu'il n'y ai plus qu'un seul lien de possible ? ( bien sûr le lien restant actif serait
Code:
/citations-amour-0-0.html


merci d'avance et bon courage.
 

nickargall

WRInaute accro
Bonjour
Il faut que tu codes un process qui, pour chaque page :

- stocke l'URL appelée dans une $variable
- crée dans une deuxième $variable2 l'URL telle qu'elle devrait l'être sous sa forme réécrite
- compare les deux variables :
- Si $variable<>$variable2, redirection 301 vers $variable avec la fonction php header()
 

nickargall

WRInaute accro
Personne ne pourra le faire pour toi sans connaître ta base de données et la programmation PHP de ton site.
Ou alors ptet en faisant celà, je me risque :
Code:
<?php
//on stocke dans une variable l'URL correcte
$urlCorrecte="/citation-amour-".$_GET['cat']."-".$_GET['num'].".html";

//on stocke dans une autre variable l'URL appelée 
$urlAppelee=$_SERVER['REQUEST_URI'];

//on compare les deux et on fait la redirection si l'URL appelle n'est pas egale a l'URL correcte

if($urlAppelee<>$urlCorrecte)
{
   header("Status: 301 Moved Permanently", false, 301);
   header("Location: ".$urlCorrecte."");		
   die;
}
?>

A toi de voir par contre ou placer ce bout de code sur ton site.
Si j'ai bon, je mérite bien un backlink :mrgreen:
 

stone66

WRInaute discret
Merci pour tous ces efforts mais malheureusement je ne peux pas utiliser la fonction "header" car j'utilise déjà la fonction session_start() et apparemment elles sont incompatible ?

un backlink contre une solution fonctionnant avec mon code :oops:
 

stone66

WRInaute discret
Pas possible car j'utilise des pseudo-frame.

bon en ajoutant :

Ajoutez tout en haut du fichier PHP appelé la fonction : ob_start();
Ajoutez tout en bas du fichier PHP appelé la fonction : ob_end_flush();

la fonction header marche, tu n'as pas tout trouvé mais c'est quand même grace à toi que j'ai réussi,
tu peux m'envoyer ton lien je le placerais dans mon footer
 

nickargall

WRInaute accro
Content que ca ait marché.
Pour le lien, ca serait pas vraiment pertinent d'avoir un lien vers un site de foot sur un site de proverbes et citations :mrgreen: c'était plus une "joke", merci quand même.
 

Discussions similaires

Haut