Redirection php (fonction header) et indexation

WRInaute discret
Bonjour,

Dans mon annuaire, lorsqu'un internaute clique sur un site, il ouvre une page php qui met à jour la base puis utilise la fonction header :

Code:
@header("Location: $url");

D'abord, je ne comprend pas pourquoi googleboot n'a pas indexé ces pages.
Est-ce parce qu'il considère que ces pages n'existent pas ?
Le lien avec le site est il valable pour notre ami ?

Ensuite, j'aimerais optimiser ce code afin que les liens soient le plus efficace possible :
- pourquoi le @ devant header ?
- Mirgolth rajoute une spécification d'en-tête HTTP. quel en est l'intéret ?
- Enfin, le titre de ma page pendant un moment est du type out.php?site=456
J'ai trouvé ici, en fin de page une "astuce".

Le code deviendrait

Code:
  header("Request-URI: $url"); 
  header("Content-Location: $url"); 
  header("Location: $url",301);

Qu'en pensez vous ?
 
WRInaute occasionnel
Salut,

Kaledonie a dit:
D'abord, je ne comprend pas pourquoi googleboot n'a pas indexé ces pages.
Est-ce parce qu'il considère que ces pages n'existent pas ?
Le lien avec le site est il valable pour notre ami ?
De quelles pages parles tu ?

- Les pages qui redirigent ne seront pas indexées. Elle n'ont aucun contenu.
- Les pages vers lesquelles tu rediriges seront elles indexées.

Les redirections sont comtée comme des liens et apparaissent comme backlink pour peu que le liens soit bien fait ( pas de variable id...).

Kaledonie a dit:
- pourquoi le @ devant header ?
@ indique à l'interpreteur ne ne pas afficher d'erreur qui pourrait empècher l'envoir correct du header HTTP. Utile sur des fonctions avant header() ( include par exemple ) cette sécurité me semble inutile sur header() car s'il devait générer une erreur/un warning c'est que de toutes mainière la redirection ne ce ferait pas

Kaledonie a dit:
- Mirgolth rajoute une spécification d'en-tête HTTP. quel en est l'intéret ?
Par défaut la fonction header() envoie un entête de redirection temporaire (302) au lieu de permanente (301) il faut donc lui préciser explicitement d'envoyer une redirection 301.
Avec une 301 Google, mettra à jour l'URL de l'index pas avec une 302.

Kaledonie a dit:
- Enfin, le titre de ma page pendant un moment est du type out.php?site=456
J'ai trouvé ici, en fin de page une "astuce".

Le code deviendrait

Code:
header("Request-URI: $url"); 
  header("Content-Location: $url"); 
  header("Location: $url",301);

Qu'en pensez vous ?
Je veux bien une explication des 2 premières lignes que même avec la spec HTTP1.1 devant les yeux je ne comprend pas .

Je rappelle pour les nouveaux et les visiteurs : La Synthese sur les redirections

Mirgolth

PS: pour le code, il n'y a pas de ="code",c'est juste:
Code:
[code]
[/code]
 
WRInaute discret
Ben, euh, moi aussi :eek:

Voici la présentation de la fonction header (en Français)
http://www.php.net/manual/fr/function.header.php
qui renvoie à la spec HTTP 1.1, en anglais

Ici est expliqué en français ( :?: ) à quoi sert Content-Location
http://www.lirmm.fr/~ajm/Cours/01-02/DE ... ochttp.htm
(en-tête de l'entité) sert à préciser la vraie URI de la ressource renvoyée si la ressource renvoyée a été trouvée à une autre URI que celle de la requête
'comprend rien 8O

Et là est expliqué ( :!: ) request-URI :
http://www2.univ-reunion.fr/~jclain/cours/http/all.html
request-URI identifie la ressource sur le serveur. Il s'agit de la partie qui est placée après le nom d'hôte dans l'URL.

:?:

PS: ah, il y a Quote et Code, 'faut q'j'm'achete des lunettes :roll:
 
WRInaute discret
Ouais, ben, pas la peine de se poser la question :

Ca marche pas lol

avec
Code:
  header("Request-URI: $url"); 
  header("Content-Location: $url");

Ou sans, ça fait rien du tout, enfin, du moins, je vois rien de mieux :cry:

Merci Mirgolth,
 
A
arsonik
Guest
quand tu faire un

header("Location: /blabla.html");
exit;

ca envoi au client (robot ou non) :

(Response Status) HTTP/1.1 302 Found
Connection Keep-Alive
Content-Type text/html
Date Thu, 21 Oct 2004 12:19:09 GMT
Keep-Alive timeout=15, max=150
Location /blabla.html
Server Apache/1.3.31 (Unix) mod_ssl/2.8.19 OpenSSL/0.9.6c PHP/4.3.9
Transfer-Encoding chunked
X-Powered-By PHP/4.3.9

avec bien sur des variables qui diffèrent suivant le serveur ;)
Tout ca pour dire que Google entre autre va interpreter que la page actuelle
n'a pu lieu d'être à cause du code 302 retourné donc il ne va normalement plus indexer la page sur laquelle tu fait ton header location mais blabla.html
 
Discussions similaires
Haut