Question redirections, Php ou .htaccess ?

WRInaute occasionnel
Bonjour à tous,

Je m'occupe d'un site e-commerce et rencontre quelques petits problème avec mes fiches produits (duplicate content suite à plusieurs réécriture d'url)

Plutôt que de m'embêter à rechercher manuellement toutes les anciennes URL (mais qui peuvent toujours avoir un peu de power) et tout rediriger dans .htaccess, j'ai préféré procéder comme ceci mais ne sait pas si c'est correct :

Je créé une variable dans laquelle je stock l'url de la page sur laquelle sur se trouve l'internaute :

Code:
$url_courante = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
Ensuite pour chaque fiche produit, je défini son URL unique
Code:
$url_produit = mon_url_unique

Et enfin je dis :
Si l'internaute se trouve sur une fiche produit, et que $url_courante est différente de $url_produit, alors on redirige vers $url_produit.

Cela permet de rediriger toutes les URL qui correspondent à une fiche produit mais qui ne sont pas réécrite comme il faut, vers les bonnes URL ($url_produit)

Mais la question est : Le power de chaque ancienne URL va t-il bien être transféré sur les nouvelles via cette manière de faire ? Ou devrais-je plutôt rediriger chaque URL une par une dans .htaccess ?

Merci anticipé.
 
WRInaute accro
Bonjour Monsieur

Pour une redirection 301, Google prendra en compte immédiatement, le PR de la page ancienne, et l'affectera à la page nouvelle.

Suggestion de code :

A la place du commentaire, mettre le code hphp du calcul de $url_produit.

Enfin, il est souhaitable en norme W3C, d'inclure dans $url_produit ( = url de redirection ), le nom de domaine.

Donc... L'url de redirection, ne nécessitera pas, que le serveur fasse l'adptation de l'url lui-même.

Même chose por $url_courante évidemment, ( pour la comparaison ).



Code:
/*
 *  Calcul de $url_produit
 */

if($url_courante != $url_produit)
{
     header("HTTP/1.1 301 Moved Permanently");
     header("Location: ".$url_produit);
     exit;
}


Bien amicalement.

Jean François Ortolo
 
WRInaute accro
Romdev a dit:
Bonjour à tous
Bonjour
Romdev a dit:
Mais la question est : Le power de chaque ancienne URL va t-il bien être transféré sur les nouvelles via cette manière de faire ? Ou devrais-je plutôt rediriger chaque URL une par une dans .htaccess ?
Oui.

Bon ok je me sens obligé d'en dire plus du fait de la réponse ci-dessus :mrgreen:

Pour Google, que tu fasses tes redirections une à une en PHP, automatiquement en PHP, une à une dans le .htaccess, automatiquement dans le .htaccess, il reçoit la même chose comme infos , c'est une redirection 301 d'une Url A vers une Url B.

Ta méthode est très bonne dans ce cas de figure, c'est ce type de process que je recommande à chaque fois qu'on me pose la question.
 
WRInaute occasionnel
Entendu merci à vous deux,
@nickargall : j'ai eu la même réponse sur un autre forum, ça confirme ;)

J'ai une autre toute petite question concernant les TITLE et DESCRIPTION, il s'agit de quelque chose que j'envisage de mettre en place sur le site :

Est-ce valable d'aller déclarer dans chaque fichier php (chaque "type" de pages donc) une variable $type_page pour pouvoir ensuite dans le fichier header.php différencier chaque type de page et pouvoir leur attribuer le bon TITLE ?

Par exemple dans le fichier listing_produit.php j'irais mettre :
$type_page = "listing produit"
et dans le fichier detail_produit.php :
$type_page = "detail produit"

Comme ça dans mon header je peux dire :

Code:
if ($type_page = "listing produit") {
    Définir TITLE et DESCRIPTION des pages listing_produit.php
}elseif($type_page = "détail produit") {
    Définir TITLE et DESCRIPTION des pages detail_produit.php
}
 
WRInaute accro
Sauf que là tu assignes $type_page, tu fais pas la comparaison :)

Perso je mettrais plutôt ça dans un array.
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />$types </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(<br /></span><span class="syntaxdefault">    </span><span class="syntaxstring">'listing produit'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(<br /></span><span class="syntaxdefault">        </span><span class="syntaxstring">'title'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">'Mon super titre'</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxstring">'description'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">'Ma super description'<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">),<br /></span><span class="syntaxdefault">    </span><span class="syntaxstring">'detail produit'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(<br /></span><span class="syntaxdefault">        </span><span class="syntaxstring">'title'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxstring">'description'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">''<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">)<br />);<br /><br />if&nbsp;(isset(</span><span class="syntaxdefault">$types</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$type_page</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'title'</span><span class="syntaxkeyword">]))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$title&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$types</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$type_page</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'title'</span><span class="syntaxkeyword">];<br />}<br /><br />if&nbsp;(isset(</span><span class="syntaxdefault">$types</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$type_page</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'description'</span><span class="syntaxkeyword">]))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$description&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$types</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$type_page</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'description'</span><span class="syntaxkeyword">];<br />}<br /><br /></span><span class="syntaxdefault"> </span>
 
WRInaute accro
ce n'est pas une bonne idée de définir UN titre et UNE description pour un ensemble de pages; chaque page doit avoir son <title> unique et pertinent.
 
WRInaute occasionnel
Disons que l'architecture actuelle du site ne me permet pas de tout faire.
@nickargall : Ensuite dans mon script je différencierai les différents shémas à l'intérieur d'un même type de page, je le fais déjà d'ailleurs.

@Spout : j'assigne $type_page oui, à chaque type de page, et ensuite j'utilise cette variable pour comparer (dans header.php qui est appelé partout) :

Code:
if ($type_page = "listing produit") {
    <title>TITLE de Listing produit</title>
}elseif($type_page = "détail produit") {
    <title>TITLE de Fiche produit</title>
}

Comme ça si je suis sur une page de listing, $type_page sera égale à "listing produit", donc <title> sera égal à "TITLE de Listing produit"

Ça n'est pas bon en faisant comme ceci ?
 
WRInaute accro
Là tu assignes:
PHP:
<span class="syntaxdefault"><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$type_page </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"listing produit"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />&nbsp;</span><span class="syntaxdefault"></span>
Tu ce sera tjs true.

Là c'est une comparaison:
PHP:
<span class="syntaxdefault"><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$type_page </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"listing produit"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />&nbsp;</span><span class="syntaxdefault"></span>
http://codepad.org/Oi0jJyBK
 
Discussions similaires
Haut