Header avec code 301

WRInaute discret
salut,

pour rediriger mon ancien nom de domaine internetservices-fr.net vers le nouveau (qui date de 2 mois) j'ai mis ceci dans mon script config.inc.php

<?php
if($_SERVER['HTTP_HOST'] != $_SERVER['SERVER_NAME'])
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
header('Connection: close');
exit();
}
?>

mais je vois sur webrankinfo qu'on conseille de mettre ceci

<?php
header("Status : 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
exit();
?>

laquelle est la meilleure ? avec le status: ou avec le HTTP/1.1 ?

merci
 
WRInaute impliqué
on voit qu'il y en a qui sont vraiment stresser par leur référencement
3ou 4 nouveau post en quelques jours
 
WRInaute passionné
Bonjour,

Les deux sont équivalents, mais le header(HTTP/1.1...) ne fonctionnera en php3 que si PHP est compilé comme module.
Dans le doute, header(Status:...) passe partout ! :wink:

Dan
 
WRInaute occasionnel
WRInaute occasionnel
l'ancienne page est http://www.antilles-voitures.com/v2/ind ... ge=calculs la nouvelles est http://www.antilles-voitures.com
Pour être plus precis la future ancienne page sera http://www.antilles-voitures.com/index.php?page=calculs (pour l'instant je suis en phase de test)
Dans le fichier v2/index.php (futur index.php) j'ai mis :

Code:
if ($page == "calculs") {
	header("Status: 301 Moved Permanently"); 	
	header("Location: http://www.antilles-voitures.com");
	exit();
}
Car la page calculs n'existera plus. La redirection marche bien (on tombe bien à la racine du site) mais le statut reste 200.
J'ai également testé sans le bloc if, c'est à dire en redirigeant toutes les pages le résultat est le même.
 
WRInaute passionné
En testant au départ de WebMasterWorld, j'ai:

HTTP/1.1 302 Found
Date: Thu, 17 Jul 2003 18:33:46 GMT
Server: Apache/1.3.19 (Unix) PHP/4.1.2
X-Powered-By: PHP/4.1.2
Status: 301 Moved Permanently
Location: www.antilles-voitures.com
Connection: close
Content-Type: text/html
Pour un de mes anciens répertoires, redirigé avec RedirectPermanent, j'ai:
HTTP/1.1 301 Moved Permanently
Date: Thu, 17 Jul 2003 18:38:59 GMT
Server: Apache
Location: immo.wildcroft.com/publication/
Connection: close
Content-Type: text/html; charset=iso-8859-1

Donc, dans le premier cas, il retourne une entête 302, comme il trouve le fichier. Et le statut de redirection est dans le message suivant l'entête. Tu as donc 302 comme entête Apache et 301 comme message PHP.
Dans le 2ème cas, le statut est 301 comme Apache redirige AVANT d'accéder au fichier.
Essaye en mettant header("HTTP/1.1 301 Moved Permanently"); tu auras peut-être la bonne entête.

Dan
 
WRInaute passionné
Guig2,

Pourquoi n'utilises-tu pas simplement une directive RedirectPermanent ? Skyturn le permet sur ses serveurs... et ce sera beaucoup plus rapide.

Dan
 
WRInaute occasionnel
pareil avec le header("HTTP/1.1 301 Moved Permanently");
Je peux pas utiliser de RedirectPermanent dans ce cas la.
En fait j'ai une structure de site avec un index.php qui génère toutes les pages en fonction du paramètre page et en l'occurence je ne veux rediriger que index.php?page=calcul mais pas les autres.
Je pense pas que RedirectPermanent permettre de rediriger les pages avec paramètre... Cela dit je vais quand même tester...
 
WRInaute occasionnel
eh bien voila le problème résolu, je pensais mal ca marche très bien avec le RedirectPermanent...
Merci bien Dan
 
WRInaute passionné
Non, les paramètres ne seront pas pris en compte. Mais de toutes façons ta redirection se fait bien, et à défaut de l'entête (lors d'une redirection Apache) tu as le Status:301 qui va bien ! :wink:
Vu le nombre de pages redirigées avec header("status: 301....") je ne pense pas que tu sois le seul pour lequel cela ne marcherait pas. :lol:

Dan
 
WRInaute occasionnel
Oui effectivement c'est pas super grave mais bon je voulais faire ca propre. J'ai quand même mis ma nouvelle version en ligne et là je comprends plus rien:
Pour le repertoire en production, ca marche pas
http://www.delorie.com/web/headers.cgi? ... %3Dcalculs
alors que pour le rep de test v2/ ca marche:
http://www.delorie.com/web/headers.cgi? ... %3Dcalculs
A noter que Apocalx me donne un 200 found pour les 2...
Enfin je vais pas me prendre la tête 2h la dessus du moment que la redirection marche...
 
WRInaute discret
Sur les conseils de Hetzeld, j'ai installé en header (), ceci :

<?php
header("Status : 301 Moved Permanently");
header("Location: h**p://www.monsite.com/links/?action=voir&val=2");
exit();
?>

et j'optiens une entête 302 lorsque je vais tester à partir d' ApocalX mon ancienne URL qui contient ce Header()

Résultat :

HTTP/1.1 302 Found
Date: Thu, 17 Jul 2003 19:46:08 GMT
Server: Apache/1.3.20 (Unix) Debian/GNU mod_perl/1.25
Status : 301 Moved Permanently
X-Powered-By: PHP/3.0.18
Location: h**p://www.monsite.com/links/?action=voir&val=1
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from w*w.monsite.com
Connection: close

C'est grave Doc?
 
WRInaute passionné
C'est normal, car tu reçois un header Apache qui te dis qu'il trouve le fichier (celui dans lequel tu as mis le code php), mais dans ce message se trouve le status:301 et l'adresse de la redirection.
Donc c'est tout bon ! :wink:

Dan

PS: le header 302 signifie "déplacé temporairement" et est reçu presque systématiquement dès qu'un site se trouve sur un cluster (plusieurs serveurs avec "load balancing").
Par exemple, chez OVH, un même site peut être servi au départ de web1, web2... web19, web20 (et ils en ont peut-être ajouté depuis)
 
WRInaute passionné
Bonjour,

j'utilise une redirection de script php vers du html du type
Code:
<?php
header("Status : 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
exit();
?>
et si je ne touche pas mes liens (pointant sur les php), avec Netscape 7 ça fonctionne parfaitement.
Par contre avec IE 5.5 de temps en temps, il me sort un 404, et en insistant un peu il finit par afficher la html. Ca arrive de manière aléatoire, pas toujours sur les mêmes liens. Etonnant ce bug IE, non ?
 
WRInaute passionné
Salut Eservice,

Tu es sûr qu'il s'agit d'un bug IE5.5 et non d'un problème chez free ?
Cela pourait être dû à un délai de réponse trop long... assez courant chez free :oops:

Dan
 
WRInaute passionné
Salut Dan,
j'ai vérifié avec Netscape et IE au même moment, avec plusieurs liens successifs, et je ne me souviens pas avoir eu des délais anormaux
Mais peut-être que IE est quand même moins permissif au niveau délai :?:
 
WRInaute passionné
En fait je faisais une redirection relative du style
Code:
header("Location: unepage.htm");
mais je ne crois pas que ça change le problème ( je n'ai pas retesté avec une absolue ).
 
WRInaute passionné
Effectivement je suis en 1.0 avec Netscape et 1.1 avec IE mais le caractère aléatoire des erreurs est bizarre quand même ...
 
Discussions similaires
Haut