Erreur 404 personnalisée et URL erronées

Nouveau WRInaute
Bonsoir à tous,

Je me pose ce soir une question car je suis en train d'améliorer le référencement d'un de mes sites.

En effet, j'ai un site de vidéo et on accepte à une vidéo de la manière suivante : lesite.com/video.php?id=11

Mais seulement voilà, lorsque le visiteur met un id qui n'existe pas, la page s'affiche quand même, sans la vidéo bien sûr.

Y aurait-il moyen de faire en sorte que cela redirige vers l'erreur 404, pour bien faire comprendre à Google que la page n'existe pas si jamais un partenaire envoie dessus ?

Ensuite, j'ai une question au niveau de l'erreur 404, pour une page personnalisée. Faut-il mettre la page en noindex, nofollow, noarchive ? Et est-ce qu'en mettant dans le .htaccess : ErrorDocument 404 /404.php, cela retourne bien le statut 404 lorsqu'on est sur la page 404.php ?

Merci d'avance pour vos réponses et bonne soirée à tous.
 
WRInaute discret
Barthmania a dit:
Y aurait-il moyen de faire en sorte que cela redirige vers l'erreur 404, pour bien faire comprendre à Google que la page n'existe pas si jamais un partenaire envoie dessus ?
Oui. La première chose à faire faire par video.php est de vérifier que la vidéo existe bien.
Je dis bien que c'est la première chose à faire, avant l'affichage de quoi que ce soit d'autre, dès les toutes premières lignes du script, parce qu'en cas d'erreur on va envoyer le code de redirection 404 via la fonction header() et ça ne marchera que si rien d'autre n'a été envoyé avant (sinon c'est le fameux "headers already sent").
Ça donne un truc du genre (je n'ai plus la syntaxe exacte en tête, donc à revérifier) :

Code:
<?php
if( ! file_exists( "la_video_a_afficher" ) )
{
    header( "HTTP/1.1 404 File Not Found" ) ;
    header( "location: /404.php" ) ;
    die() ;
}
?>
... (suite du traitement normal) ...
 
WRInaute accro
Et pour répondre au reste de la question, il n'y a rien d'autre à faire. Une page 404 personnalisée ne sera de toute façon pas indexée et les liens qui s'y trouvent ne sont pas suivis, et par définition une page 404 renvoie un entête 404. La ligne dans le .htaccess ne fait qu'indiquer quelle page afficher en cas d'erreur 404.
 
Nouveau WRInaute
Merci à vous deux pour vos réponses.

Je viens donc de faire quelques tests, et donc :

Si la vidéo n'existe pas, j'ai mis header( "HTTP/1.1 404 File Not Found" ); et l'entête de la page avec un id erroné est bien en 404. Par contre en mettant header( "location: /404.php" ); cela redirige donc vers cette page, mais l'entête de la page principale devient en 302, est-ce grave ? Faut-il dire à la page 404.php d'avoir toujours comme entête erreur 404 ?

Merci beaucoup ! :)
 
WRInaute discret
Ah oui ... alors ça doit être

Code:
header( "HTTP/1.1 404 File Not Found", false, 404 ) ;
pour forcer le code 404.
 
WRInaute discret
Je viens de (re)trouver ça dans la doc php :
Le deuxième type d'appel spécial est "Location:". Non seulement il renvoie un en-tête au client, mais, en plus, il envoie un statut REDIRECT (302) à Apache.
Donc je sais pas trop ... à part un bricolage qui consisterait à trapper les 404 par le .htaccess qui renvoie vers une page particulière, qui elle-même fait une redirection 301 comme indiquée sur https://www.webrankinfo.com/dossiers/conseils/relancer-referencement . Mais alors du coup je ne comprends pas pourquoi on ne se prendrait pas un deuxième 302.
 
Discussions similaires
Haut