404-Tête de requête de redirection
Sur une LAMPE standard application que je suis à envoyer des gens à ma page 404 à l'aide d'un .htaccess à la règle comme suit:
ErrorDocument 404 http://www.mydomain.com/404.php
Nous servir des images dynamiques à l'aide d'un fichier php qui lit des fichiers depuis le système de fichiers, j'ai juste remarqué que, lorsqu'une image est supprimée de l'app que nous ne sommes pas de prendre ceci une demande de http://www.mydomain.com/image_4.jg (par exemple) qui appelle image.php utilisation de mod_rewrite n'est pas rediriger l'utilisateur vers la page 404, comme la dynamique de l'image du fichier existera toujours. Dans ce cas, je sais que je devrais être à l'aide d'une 404, mais je ne sais pas où.
Évidemment, je sais que j'ai besoin d'insérer manuellement un en-tête de rediriger vers le 404.php la page lorsque l'image a été supprimé, mais que dois-je envoyer un 404-tête avec cette redirection?. En regardant le code de notre 404.php page envoie une erreur 404 en-tête déjà avec ("HTTP/1.1 404 Not Found");
qui est ce que notre équipe de RÉFÉRENCEMENT avait demandé à quelques années en arrière, vous ne savez pas si c'est correct ou pas?. Il semble contre-intuitif pour moi, car il serait presque implique que la page 404, lui-même n'a pas été trouvé.
Je suppose que c'est 2 questions:
- Dois-je envoyer un 404-tête à l'intérieur de la redirection lorsque l'image n'est pas
trouvé? - Ma page 404 envoyer un 404-tête?
MODIFIER
Il ne semblent réellement possible d'envoyer un 404 et rediriger dans le même temps, par exemple, ce qui provoque Chrome pour afficher un "Oups! Ce lien semble brisé." message
header( "Location: /404.php", true, 404 );
Si vous cassez les en-têtes comme elle ne fonctionne pas comme prévu
header("HTTP/1.1 404 Not Found");
header("Location: /404.php" );
Dans ce cas, si vous regardez les en-têtes, il envoie un 302 suivie par une erreur 404. Est-il suffisant dans ce cas, peut-être à juste envoyer un en-tête, sans une redirection? peut-être juste envoyer un 410 tel que recommandé par certains?
OriginalL'auteur robjmills | 2011-10-16
Vous devez vous connecter pour publier un commentaire.
404 Not Found
— Code D'État Définitions
Une réponse 404 doit être envoyé au client lorsque la ressource n'est pas trouvée.
Oui. Ceci indique que le client, lui demandant de l'image dynamique que la ressource n'a pas été trouvé. Si vous connaissez la ressource ne sera jamais de retour, utilisez 410 (Disparu) à la place.
Oui. Voir Erreur 404 Pages et des Redirections pour les Référenceurs
Mise à jour
header("HTTP/1.0 404 Not Found");
devrait être suffisant; cependant, Google Chrome ne parvient pas à afficher une page 404 personnalisée si le contenu est à moins d'une longueur de 512 octets.OriginalL'auteur Herbert
L'erreur des documents définis à l'aide de la
ErrorDocument
directive sont servis uniquement lorsque le serveur web reconnaît que la demande ne peut pas être mappé sur un fichier existant. Mais comme vous l'utilisation de mod_rewrite pour les mapper sur un image.php, ils sont évidemment trouvé. Donc à partir du serveur web point de vue, la première demande peut être satisfaite.À ce stade, il n'a pas d'importance si la demande ne peut être remplie et les résultats dans une 404 plus tard. Dans ce cas, la image.php doit répondre avec une bonne réponse à l'erreur.
Vous ne pouvez envoyer qu'un code d'état de réponse. Ainsi, vous pouvez envoyer une réponse d'erreur (4xx) ou une réponse de redirection (3xx). Dans votre cas, avoir une URL absolue que l'URL du document donnera un code d'état de redirection (p. 302) en lieu et place de l'origine 404.
Oui, bien sûr. C'est ce que les codes d'état sont là pour.
Et ne fournissent également des informations utiles sur les documents d'erreur. Il n'y a rien de pire que de sens des documents de l'erreur.
Si la ressource demandée est réellement passé (c'est à dire la ressource demandée a existé à un certain point), alors, oui, envoyer un 410. Mais si la ressource demandée n'existe pas ou que vous ne pouvez pas dire cela, et vous ne pouvez dire qu'actuellement, il n'existe pas, puis de l'envoyer sur une page 404.
OriginalL'auteur Gumbo
Simplement dit: oui pour les deux questions.
Une 404-d'en-tête envoyé à partir de image.php ne vous rediriger vers le errordocument 404 spécifié .htaccess, de sorte que vous auriez à rediriger manuellement à 404.php chaque fois qu'une image n'est pas trouvée. Le moyen privilégié est un 410 (Disparu), surtout depuis que vous savez que la ressource demandée est supprimé et ne reviendra pas en arrière, de sorte que les moteurs de recherche peuvent retirer le lien.
Comme pour le deuxième oui: il faut bien qu'Apache va déjà le faire pour vous.
OriginalL'auteur CodeCaster
OriginalL'auteur TimWolla
Vous voudrez peut-être inclure la page 404, envoyer uniquement l'en-tête vous donnera une page vierge
OriginalL'auteur Dídac Rios
OriginalL'auteur the7oker