HTTP 404

Το μήνυμα σφάλματος 404 ή "Not Found" (Δεν Βρέθηκε) είναι ένας κωδικός απάντησης του πρωτοκόλλου HTTP, που δείχνει ότι ο πελάτης ήταν σε θέση να επικοινωνήσει με τον διακομιστή, αλλά ο διακομιστής δεν μπόρεσε να βρει ό,τι ζητήθηκε. Ένα σφάλμα 404 δεν πρέπει να συγχέεται με το σφάλμα "server not found" (δεν βρέθηκε διακομιστής) ή άλλα παρόμοια λάθη, στα οποία η σύνδεση με τον διακομιστή προορισμού δεν μπορούσε να γίνει καθόλου. Στο μήνυμα σφάλματος 404 υποδηλώνεται πως η σελίδα που ζητήθηκε μπορεί να είναι διαθέσιμη και πάλι στο μέλλον.

 Το μήνυμα για σφάλμα 404 συχνά επιστρέφεται όταν οι σελίδες έχουν μετακινηθεί ή διαγραφεί. Στην πρώτη περίπτωση, η καλύτερη απάντηση είναι η ιστοσελίδα να επιστρέψει στον διακομιστή ένα μήνυμα 301 Moved Permanently, το οποίο μπορεί να διαμορφωθεί στα περισσότερα αρχεία ρυθμίσεων του server, ή μέσω της επανασυγγραφής του URL. Στη δεύτερη περίπτωση, θα πρέπει να επιστραφεί ένα μήνυμα 410 Gone. Επειδή αυτές οι δύο επιλογές απαιτούν ειδική διαμόρφωση του διακομιστή, οι περισσότερες ιστοσελίδες δεν κάνουν χρήση τους. Σε επίπεδο HTTP, ο κωδικός απάντησης 404 ακολουθείται από μια αναγνώσιμη από τον άνθρωπο "φράση". Η προδιαγραφή του HTTP προτείνει τη φράση "not found" (δεν βρέθηκε), και πολλοί διακομιστές έχουν ως προεπιλογή μια σελίδα HTML που περιλαμβάνει τόσο τον κωδικό 404 όσο και την φράση αυτή. Τα σφάλματα 404 δεν πρέπει να συγχέονται με τα σφάλματα του DNS, τα οποία εμφανίζονται όταν μια συγκεκριμένη διεύθυνση URL αναφέρεται σε ένα όνομα διακομιστή που δεν υπάρχει. Ένα σφάλμα 404 υποδεικνύει ότι ο διακομιστής βρέθηκε, αλλά ότι δεν ήταν σε θέση να ανακτήσει τη σελίδα που ζητήθηκε. Οι webservers μπορούν τυπικά να ρυθμιστούν ώστε να εμφανίζουν μια προσαρμοσμένη σελίδα σφάλματος, που μπορεί να περιλαμβάνει μια πιο φυσική περιγραφή, αναφέροντας τη γονική τοποθεσία ή μερικές φορές περιέχοντας μια φόρμα αναζήτησης. Η επίπεδου πρωτοκόλλου φράση, η οποία είναι κρυμμένη από τον χρήστη, είναι σπάνια προσαρμοσμένη. Στον Internet Explorer (πριν από τον Internet Explorer 7), ωστόσο, δεν θα εμφανίζει προσαρμοσμένες σελίδες, εκτός αν είναι μεγαλύτερες από 512 bytes, επιλέγοντας αντ' αυτού να εμφανίσει μια "φιλική" σελίδα λάθους. Το Google Chrome περιλαμβάνει παρόμοιες λειτουργίες, όπου το 404 αντικαθίσταται με εναλλακτικές προτάσεις που δημιουργούνται από αλγόριθμους της Google, αν η σελίδα έχει μέγεθος μικρότερο από 512 byte. Ένα άλλο πρόβλημα είναι ότι εάν η σελίδα δεν παρέχει ένα favicon, και υπάρχει μια προσαρμοσμένη σελίδα σφάλματος 404, θα προκύψει επιπλέον κυκλοφορία και μεγαλύτεροι χρόνοι φόρτωσης. Μερικοί ιστοχώροι εμφανίζουν την φράση "not found" με την επιστροφή μιας τυπικής σελίδας, με κωδικό απόκρισης "200 ΟΚ". Η περίπτωση αυτή είναι γνωστή ως Soft 404. Τα Soft 404 είναι προβληματικά κατά τις αυτοματοποιημένες μεθόδους για την ανακάλυψη μιας σπασμένης σύνδεσης, κυρίως από τις μηχανές αναζήτησης. Ορισμένες μηχανές αναζήτησης, όπως το Yahoo, κάνουν χρήση αυτοματοποιημένων διαδικασιών για την ανίχνευση Soft 404s. Τα Soft 404 μπορεί να προκύψουν ως αποτέλεσμα των λαθών διαμόρφωσης, κατά την χρήση λογισμικού διακομιστή HTTP, όπως για παράδειγμα όταν στο λογισμικό Apache, όταν ένα Error Document 404 (που περιέχεται στο αρχείο ρυθμίσεων .htaccess) ορίζεται ως απόλυτη διαδρομή (π.χ. http://example.com/error.html) αντί ως σχετική (/ error.html).Μερικοί proxy servers δημιουργούν ένα σφάλμα 404 όταν ο απομακρυσμένος υπολογιστής δεν είναι παρών. Εμφανίζουν το μήνυμα 404 αντί να επιστρέψουν το σωστό εύρους 500 κωδικό, για λάθη όπως αποτυχημένη ανάλυση ονόματος κεντρικού υπολογιστή ή άρνηση σύνδεσης TCP που αποτρέπει τον διακομιστή μεσολάβησης από την ικανοποίηση του αιτήματος. Αυτό μπορεί να προκαλέσει σύγχυση στα προγράμματα που αναμένουν και ενεργούν σε συγκεκριμένες απαντήσεις, καθώς δεν μπορούν πλέον εύκολα να γίνει διάκριση ανάμεσα στο αν ο διακομιστής είναι απών ή αν απλά μια σελίδα είναι απούσα (ενώ ο διακομιστής όχι). HTTP HTTP 403 Κωδικός κατάστασης HTTP 404 στο http-statuscode.com ErrorDocument Directive – instructions on custom error pages for the Apache 2.0 web server Wikipedia 404 error page