Kody Apache’a

Ostatnio miałem problem ze prawidłową obsługa ErrorDocument, tj. zapisaniem w logu serwera httpd wpisu o kodzie 404.
Gdy mamy np. błędną stronę typu /index.php?page=NieMaTakiejStrony i wiemy, że faktycznie takiej strony nie ma, to samo ustawienie w httpd.conf:

ErrorDocument 404 /index.php?page=404

powodowało, że wyświetlała mi się przygotowana wcześniej w CMSie strona z treścią informacyjną o nieznalezieniu strony, natomiast w logach apache’a widziałem wpis typu:

/index.php?page=404 200 OK

Problem polegał na tym, że widząc informację o błędzie, w logu serwera www zapisywała się informacja, że nie był to błąd.
Musiałem zastosować małą sztuczkę. W httpd.conf ustawiłem:

ErrorDocument 404 /404.php

Czyli plik inny aniżeli jeden spośród stron dynamicznych ładowanych z contentu. Jego źródło wygląda następująco (tylko 2 linijki):

header(„HTTP/1.0 404 Not Found”);
echo file_get_contents(„/index.php?page=404”);

Czyli najpierw wysyłam do serwera www nagłówek z kodem 404 Not Found, a następnie wyświetlam treść strony, do której poprzednio prowadziła użytownika aplikacja CMS.
Dzięki tej sztuczce w logach apache’a mamy wpis

/index.php?page=NieMaTakiejStrony 404 –

Czyli użytkownik widzi informację o nieznalezieniu strony, a w logach apache’a zapisuje się info o błędzie strony.

Po takim tricku jesteśmy szczęśliwi.

Poniżej zamieszczam listę kodów błędów – napewno komuś się przyda.

Successful Client Requests
200 – OK
201 – Created
202 – Accepted
203 – Non-Authorative Information
204 – No Content
205 – Reset Content
206 – Partial Content

Client Request Redirected
300 – Multiple Choices
301 – Moved Permanently
302 – Moved Temporarily
303 – See Other
304 – Not Modified
305 – Use Proxy

Client Request Errors
400 – Bad Request
401 – Authorization Required
402 – Payment Required (not used yet)
403 – Forbidden
404 – Not Found
405 – Method Not Allowed
406 – Not Acceptable (encoding)
407 – Proxy Authentication Required
408 – Request Timed Out
409 – Conflicting Request
410 – Gone
411 – Content Length Required
412 – Precondition Failed
413 – Request Entity Too Long
414 – Request URI Too Long
415 – Unsupported Media Type

Server Errors
500 – Internal Server Error
501 – Not Implemented
502 – Bad Gateway
503 – Service Unavailable
504 – Gateway Timeout
505 – HTTP Version Not Supported

Czasami się przydaje.