· 404-sider i Apache - nu med mail-notificering

05/11/2004 @ 01:24

I forbindelse med omkodning af mcnally.dk, søgte jeg en metode hvorved jeg kunne sende mine besøgende til en "ordentlig" 404-side, samtidig med at jeg fik at vide præcis hvilken side de havde forsøgt at finde på mit site. Specielt i forbindelse med relancering af websites, sker det ofte, at man glemmer en fil eller to, som også har relevans for det nye site.

Apache kan konfigureres så 404-forespørgsler sendes til specifikke dokumenter, og det besluttede jeg mig at gøre brug af. Jeg begyndte derfor at google, og fandt da også et par artikler om emnet, men ikke rigtig noget jeg kunne bruge til noget. Til sidst faldt jeg dog over httpd.apache.org, som ganske godt forklarer hvordan 404-sider sættes op samt hvilke systemvariable man får til rådighed, når Apache viderestiller til ens 404-side.
En vigtigt ting at bemærke er følgende kommentar:


None of these will be set if your ErrorDocument is an external redirect (i.e., anything starting with a scheme name like http:, even if it refers to the same host as the server).


Altså, hvis der viderestilles til en absolut URL i stedet for en relativ URL, får man ikke adgang til de smarte systemvariable.

Med dette på plads bryggede jeg følgende 404-handler:

ErrorDocument 404 /404.php

Egentlig frygtelig simpelt: Der viderestilles blot til /404.php, som så håndterer beskeden til brugeren og til mig.
Indholdet af 404.php er bl.a. følgende:

mail("email@example.com",
"Missing file on mcnally.dk",
"Apache told me the following: ".$_SERVER['REDIRECT_ERROR_NOTES']);


$_SERVER-array'et indeholder nu bl.a. stien til den fil brugeren efterspurgte, og jeg kan se hvorvidt det er en decideret fejl eller blot et fejltast.

Ved at var_dump'e $_SERVER-array'et, får man et godt overblik over hvilke nøgler, der kan bruges til noget fornuftigt.

Har du spørgsmål til ovenstående, så tøv ikke med at skrive. Min e-mail-adresse står vist nok et eller andet sted på sitet.

» Tilbage til skriblerier

· Tilfældigt citat

Father Domenico: "If you would be kind... Would you tell us, where did we fail?"
The Goat laughed, spoke three words, and vanished. "God is Dead."

James Blish, Black Easter

· Kontaktinformationer

David Mc Nally
Mageløs 9B, 2tv
5000 Odense C
david snabel-a mcnally prik dk