Redirection 301 par header PHP

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Redirection 301 par header PHP

Message le Ven Aoû 19, 2005 17:31

Bonjour

J'ai mis en place la redirection 301 de mon site http://domain.tld sur http://www.domain.tld , avec un fichier .htaccess à la racine de mon site. Cà fonctionne.

Cependant, il y a deux résultats différents quand je fais:

http://domain.tld/php/courses_anciennes/old_courses.php , et
http://www.domain.tld/php/courses_ancie ... ourses.php

Dans le premier cas, le test de WRI me donne: redirection 301, et dans le deuxième cas, ce même test me donne: redirection 302.

En effet, cette url old_courses.php, fait des redirections 302 par header, et donc il faudrait que je sache comment faire des redirections 301 par header sous PHP.

Le code que j'utilise actuellement ( qui donne une redirection 302 ), est:

header("pragma: no cache");
header("Location: $url");

Ceci remplace la page actuelle, par la page $url, mais fait une redirection 302, et non pas 301.

D'où ma question ( de newbie j'avoue ): Comment faire une redirection 301 en PHP avec l'instruction header, ayant le même effet ?

Merci beaucoup de vos réponses.

Jean Francois Ortolo


thickparasite
WRInaute accro
WRInaute accro
 
Messages: 1101
Inscription: Sam Avr 26, 2003 23:47

Message le Ven Aoû 19, 2005 17:37

Je pense que le code suivant devrait le faire ;)
Code: Tout sélectionner
<?
if ($_SERVER["HTTP_HOST"] != "www.domain.tld") {
    header ('HTTP/1.1 301 Moved Permanently');
    header("Location: http://www.domain.tld".$_SERVER['PHP_SELF']);
}
?>

nodom
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Sam Jan 15, 2005 17:26

Message le Ven Aoû 19, 2005 17:37

header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url);
:wink:


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Ven Aoû 19, 2005 17:50

nodom a écrit:header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url);
:wink:


Bonjour nodom

Mais... Si le navigateur est configuré pour un protocole < HTTP/1.1, par ex 1.0, ces instructions fonctionneront quand même ?

Excusez-moi de poser une telle question de newbie, mais je n'ai jamais pensé à ce problème.

Merci beaucoup de ta réponse.

Jean Francois Ortolo


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Ven Aoû 19, 2005 18:34

Réponse
Cà marche... En tout cas avec Firefox comme d'habitude.

Mais l'adresse rendue par le test de WRI, dans le cas sans www, est bien old_courses.php , alors qu'avec www, l'adresse est l'adresse de redirection.

Google ne va-t-il pas faire des histoires, s'il constate que deux pages d'url identique, ne différant que par ce www, donnent des urls résultantes différentes, avec des résultats à l'affichage identiques ?

En d'autres termes, comment faire la redirection 301 de http://domain.tld sur http://www.domain.tld, avec .htaccess, de façon à ce que la redirection soit entièrement transparente, et tienne compte des redirections 301 ultérieures sur des sous-pages ?

Merci beaucoup de vos réponses.

Jean Francois Ortolo

nodom
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Sam Jan 15, 2005 17:26

Message le Ven Aoû 19, 2005 19:12

ortolojf a écrit:Réponse
En d'autres termes, comment faire la redirection 301 de http://domain.tld sur http://www.domain.tld, avec .htaccess, de façon à ce que la redirection soit entièrement transparente, et tienne compte des redirections 301 ultérieures sur des sous-pages ?

Merci beaucoup de vos réponses.

Jean Francois Ortolo


RewriteCond %{HTTP_HOST} ^domain.tld $
RewriteRule ^(.*) http://www.domain.tld /$1 [QSA,L,R=301]


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Ven Aoû 19, 2005 19:40

nodom a écrit:
ortolojf a écrit:Réponse
En d'autres termes, comment faire la redirection 301 de http://domain.tld sur http://www.domain.tld, avec .htaccess, de façon à ce que la redirection soit entièrement transparente, et tienne compte des redirections 301 ultérieures sur des sous-pages ?

Merci beaucoup de vos réponses.

Jean Francois Ortolo


RewriteCond %{HTTP_HOST} ^domain.tld $
RewriteRule ^(.*) http://www.domain.tld /$1 [QSA,L,R=301]



Rebonjour nodom

J'avais fait avant, celà:

RewriteEngine on
RewriteCond %{HTTP_HOST} !www.domain.tld$
RewriteRule (.*) http://www.domain.tld/$1 [QSA,L,R=301]

Cà marche très bien, et c'est ce qui me désole:

Quand je fais: http://domain.tld/php/courses_anciennes/old_courses.php , celà me fait maintenant: redirection 301 sur http://www.domain.tld/php/courses_ancie ... ourses.php

Mais quand je fais, avec le www: http://www.domain.tld/php/courses_ancie ... ourses.php
, ceà me fait maintenant: redirection 301 sur http://www.domain.tld/php/courses_ancie ... ourses.php

Ceci avec le test du Header HTTP de WRI.

Evidemment, l'adresse old_courses.php est redirigée par mes soins sur wait2_old_courses.php ( redirection 301 correcte comme ci-dessus ), mais cette adresse wait2_old_courses.php , n'apparaît pas dans le cas où le www n'est pas préfixé au domain.tld

Le test de WRI ne suit que la première redirection, car l'adresse correcte finale des redirections, qu'il devrait y avoir, serait plutôt celle-ci: http://www.domain.tld/php/courses_ancie ... ourses.php
dans les deux cas ( avec et sans www ).

Donc le problème vient du test de WRI, qui ne prend en compte que la première redirection. Mais dans le cas de Google, que va-t-il penser de mes redirections multiples ? C'est tout le problème.

Si Google, comme WRI, ne prend en compte que la première redirection, il va penser que la même url old_courses.php conduit à deux urls différentes ( old_courses.php et wait2_old_courses.php ) suivant que www est absent ou présent, et que va-t-il en déduire ? Celà va-t-il avoir une influence néfaste sur mon référencement ?

Merci beaucoup de tes réponses.

Jean Francois Ortolo


thickparasite
WRInaute accro
WRInaute accro
 
Messages: 1101
Inscription: Sam Avr 26, 2003 23:47

Message le Ven Aoû 19, 2005 21:02

Tu veux un header ou un .htaccess ?
Décide toi !

Le code exact pour le .htaccess (attention aux espaces qui ne sont pas bons dans les morceaux de code donnés précédemment).
Code: Tout sélectionner
RewriteEngine on

RewriteCond %{HTTP_HOST} !www.domain.tld$
RewriteRule (.*) http://www.domain.tld/$1 [QSA,L,R=301]


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Sam Aoû 20, 2005 10:57

Bonjour thickparasite

Tu n'as pas compris.

D'une part, je cherche ( avec .htaccess donc, comme je ne peux pas faire autrement, sinon il y aurait plusieurs instructions header ) à rediriger le domaine http://domain.tld vers le domaine http://www.domain.tld , par une redirection 301, comme recommandé par WRI. Celà, le fichier .htaccess que j'ai programmé comme ci-dessus le fait correctement, mais...

... Je cherche aussi, dans mes script de mon site, à faire des redirections 301 de scripts vers d'autres scripts, pour éviter que la durée d'exécution d'un script, dépasse les 30 secondes fatidiques..., et là, effectivement, le fait que le test de Header HTTP de WRI s'arrête à la première redirection, fait que l'adresse finale qu'il indique, n'est pas la même, dans le cas où le domaine est http://domain.tld , ou http://www.domain.tld , dans le cas où la page indiqué n'est pas la page d'accueil.

D'où ma question: Google suit-il toutes les redirections, sans s'arrêter à la première redirection ? Dans ce cas, l'adresse dans les deux cas est la bonne. Ou bien le test de Google est-il identique à celui de WRI, et dans ce cas le fait qu'il y ait deux adresses finales différentes, avec ou sans www, va-t-il indisposer Google ?

Voilà, j'espère que j'ai bien débroussaillé le problème, merci beaucoup de vos réponses.

Jean-François Ortolo

nodom
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Sam Jan 15, 2005 17:26

Message le Sam Aoû 20, 2005 11:34

Votre besoin n'est pas claire pour la deuxième redirection (30 secondes).
expliquez pourquoi cette redirection? pourquoi 301? comment ça doit marcher coté visiteur? et qu'attendez vous de google? parlez de votre besoin avant de chercher la solution. :D


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Sam Aoû 20, 2005 18:05

nodom a écrit:Votre besoin n'est pas claire pour la deuxième redirection (30 secondes).
expliquez pourquoi cette redirection? pourquoi 301? comment ça doit marcher coté visiteur? et qu'attendez vous de google? parlez de votre besoin avant de chercher la solution. :D


Bonjour nodom

Il ne s'agit pas de "une deuxième redirection".

Il s'agit que je suis en mutualisé, et que la durée d'exécution maximale de mes scripts PHP, est de 30 secondes ( OVH 240Plan ), et que donc je suis obligé de jongler avec des redirections ( plusieurs ) à l'intérieur de chaques scripts, pour aller de scripts en script si besoin. C'est comme ça.

D'autre part, je n'ai, à part la page d'accueil de mon site, que deux pages de référencées, car les deux pages résultantes contiennent un formulaire, et GG ne va pas plus avant.

Pourquoi je souhaite que ce soient des redirections 301, ces mutiples redirections ? Parce que *si je met des redirections 302*, là tout est correct, sauf que le test HTTP Header de WRI, dans le cas de http://domain.tld/sous_repert/page.php indiquera une redirection 301 sur la bonne page page.php, alors qu'avec http://www.domain.tld/sous_repert/page.php indiquera une redirection 302 sur page.php ( la page initiale )

301 dans un cas, 302 dans l'autre, GG risque de perdre les pédales, non ?

Et *si je met des redirections multiples 301 dans mes scripts*, à ce moment-là c'est la même redirection 301 qui est indiquée, mais pas vers la même page: La page source dans le premier cas ( sans www ), la première page redirigée dans le deuxième cas ( avec www ).

Donc le problème, est de savoir si GG suit les redirections 301 multiples, et, au lieu de rester à la page source ( qui est la page page.php quand il n'y a pas de www ), GG va aller jusqu'à la page target, cible des redirections multiples que je fais dans les différents scripts traversés à partir de page.php

D'où la question de mon précédent post.

Bien à vous.

Jean Francois Ortolo

nodom
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Sam Jan 15, 2005 17:26

Message le Sam Aoû 20, 2005 23:04

moi je me pose une autre question. google va-t-il attendre 2 minutes le temps que le script soit exécuté et que toutes les redirection soient réalisée? pour récupérer le contenu de la dernière page?


thickparasite
WRInaute accro
WRInaute accro
 
Messages: 1101
Inscription: Sam Avr 26, 2003 23:47

Message le Sam Aoû 20, 2005 23:13

Ok ortolojf je pige mieux.

A mon avis il faut que tu fasses un test car ça me semble un peu tiré par les cheveux :p
Mais si la redirect marche pour le visiteur, il faut espérer que GG emboîte le pas.
nodom précise un paramètre important car même si GG indexe tes pages, il est vraisemblable qu'elles passent sans titre ni decription à terme.

Il faut garder à l'esprit que sur le Web la simplicité est la solution à 99% des problèmes et peut-être que tu peux trouver une solution qui soit plus simple ?


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Dim Aoû 21, 2005 10:33

thickparasite a écrit:Ok ortolojf je pige mieux.

A mon avis il faut que tu fasses un test car ça me semble un peu tiré par les cheveux :p
Mais si la redirect marche pour le visiteur, il faut espérer que GG emboîte le pas.
?



Bonjour thickparasite

Cependant, du temps que j'avais mes redirections multiples par header en 302, GG donnait bien comme page en cache, l'affichage du dernier script redirigé...

Tout le problème serait donc de savoir si GG, dans son évaluation des redirections ( 301, 302... ) tient compte de l'affichage effectif ( en cache ), ou bien fait le même test header HTTP, que WRI.

Une dernière question: Qu'entends-tu par test ?

Je ne peux pas changer le résultat de ces redirections, ni leur effet sur GG, car il y a de toute façon, la redirection par .htaccess, de http://domain.tld sur http://www.domain.tld

J'envisage, au lieu de faire cette redirection de domaine sans www sur domaine avec www, de tout simplement renvoyer une erreur 404 ( non existant ) sur le domaine http://domain.tld . Qu'en penses-tu ? A ce moment-là, GG comprendrait que le domaine http://domain.tld n'existe pas , ce qui est parfois possible, alors que le domaine http://www.domain.tld existe.

Amicalement.

Jean Francois Ortolo


ortolojf
WRInaute accro
WRInaute accro
 
Messages: 1164
Inscription: Mer Aoû 14, 2002 13:30

Message le Dim Aoû 21, 2005 10:56

nodom a écrit:moi je me pose une autre question. google va-t-il attendre 2 minutes le temps que le script soit exécuté et que toutes les redirection soient réalisée? pour récupérer le contenu de la dernière page?



En fait...
Même pour les Courses du lendemain/après-midi, le délai d'affichage est quasi instantané vis-à-vis de GG, car GG passe soit dans la nuit, soit a toutes les chances de ne pas passer juste au moment de la mise à jour des Courses, qui a lieu quand le premier visiteur après 15 h, passe sur cette page. L'autre page est quasi instantanée dans tous les cas.

Cependant, pour la page des Courses du lendemain/après-midi, je suis obligé de procéder avec des redirections multiples, car le délai de mise à jour n'est pas prédictible, inférieur ou légèrement supérieur à 30 secondes.

... Je ne vais quand même pas faire une programmation différente, suivant que la mise à jour doit avoir avoir lieu, ou non ? Il est vrai que je peux savoir dans mon script new_courses.php, si la mise à jour doit avoir lieu ou non, et donc en tenir compte dans la programmation, mais je n'ai pas envie de faire l'effort de modifier mon site de fond en comble comme celà...

Remarque, c'est bien possible que ce que tu dis soit la solution de mon problème... Si je pouvais programmer ces deux pages sans redirections, GG ne verrait que les pages cibles, old_courses.php , ou new_courses.php

Pffoouu, quel effort...

Merci beaucoup de tes conseils.

Jean Francois Ortolo

Redirection 301 par header PHP

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Test de lien (type de redirection)
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Test HTTP header
    Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités