2010-10-13 20 views
1

J'ai un système de revue dynamique en place qui affiche 30 avis par page, et en atteignant 30 avis, il est paginé. J'ai donc des pages telles queRetour 404 si non existant page # PHP

/commentaires/ville/Boston/

/commentaires/ville/Boston/Page/2/

/critiques/ville/Boston/Page/3/

et ainsi de suite et ainsi de suite

Malheureusement, Google semble être l'indexation des pages à travers ce qui semble être l'inférence - comme

/commentaires/ville/Boston/Page/65/

Cette page n'existe absolument pas, et je voudrais informer Google de cela. Actuellement, il affiche une page de commentaires, mais sans commentaires. Je ne peux pas imaginer que ce soit très bon pour le référencement. Donc, ce que j'essaie de faire si d'abord vérifier le # de résultats de ma requête MySQL, et s'il n'y a pas de résultats, renvoyer un 404 et les transmettre à la page d'accueil ou une autre page.

Actuellement, c'est ce que j'ai.

if (!$validRevQuery) { 
    header("HTTP/1.0 404 Not Found"); 
    header("Location: /index.php"); 
    exit; 
} 

Suis-je sur la bonne voie?

+1

Je ne mettrai pas un 404 puis rediriger, c'est quelque peu contradictoire, juste faire une bonne 404 page – Hannes

+0

Si vous voulez un 404 et que seuls les moteurs de recherche atteignent cette requête, alors pourquoi ne pas rediriger vers une page inexistante et laisser le serveur gérer le reste? Pas très propre si l'utilisateur le frappe, mais cela ne prend qu'une ligne de code :-) – Kendrick

+0

Pas forcément. Existe-t-il un mécanisme de vérification de type que vous utilisez? –

Répondre

4

Une redirection est un code d'état, tout comme le 404. Vous ne pouvez pas avoir deux codes d'état.

Vous devez générer l'état 404 et afficher un corps de réponse (= une page d'erreur) en même temps.

if (!$validRevQuery) { 
    header("HTTP/1.0 404 Not Found"); 
    .... output full HTML structure here ..... 
    exit; 
} 
+0

Merci! C'était utile! – Yev

0

Vous ne pouvez pas envoyer un code d'état 404 et effectuer une redirection (généralement 3xx status code). Vous ne pouvez en faire qu'un: envoyez un code d'état 404 et un document d'erreur ou répondez avec une redirection.

0

Comme Pekka l'indique, la meilleure option est de faire un état 404, puis mettre votre 404 code de la page après. Il est une mauvaise pratique pour le référencement si vous juste 301 (rediriger) la page, car alors les moteurs de recherche continueront à visiter la page afin de voir si la redirection est toujours là.