Websitefoutpagina's zijn misschien een van de meest over het hoofd gezien stukken van een volledig afgeronde website. Niet alleen zijn ze belangrijk, maar ze geven je ook de gelegenheid om een beetje plezier te hebben. Hoewel veel webontwikkelaars vertrouwen op serverlogboeken om op foutenpagina's te letten, ga ik een andere aanpak kiezen door een door PHP gegenereerde e-mail te gebruiken. Daarnaast zullen we het ontwerp wat opfleuren, basisnavigatie toevoegen en linken naar de sitemap van de website.
De meest voorkomende foutpagina - degene waar u waarschijnlijk het meest vertrouwd mee bent - is de "404 niet gevonden pagina". Meer mensen ondervinden dit type foutpagina dan enig ander. Andere veel voorkomende foutmeldingen die u tegenkomt zijn 500 Internal Server Error, 400 Bad Request of 403 Forbidden. Vraagt u zich af waar het nummer voor is? Het verwijst eenvoudigweg naar de HTTP-code.
Standaard foutpagina's zijn vrij saai (zoals je hierboven kunt zien) en bieden geen ander doel aan bezoekers dan te laten weten dat er een saaie fout is opgetreden. Om deze redenen is het een goed idee om aangepaste pagina's te bieden voor de meest voorkomende fouten die u tegenkomt. Deze tutorial behandelt er slechts twee: de "404 Not Found" en "403 Forbidden".
Controleer eerst of uw hostingprovider u toestaat uw eigen foutpagina's te gebruiken. Vrijwel allemaal, en de meesten van hen bieden zelfs een configuratiegebied binnen uw configuratiescherm om u te helpen snel de pagina's te maken. In deze tutorial zullen we een Apache-webserver configureren (de meest voorkomende). Dit is gemakkelijker dan je zou denken.
Maak vervolgens verbinding met uw server via FTP of configuratiescherm en navigeer naar de hoofdmap van het document (meestal www of public_html) die uw websitebestanden bevat. We gaan op zoek naar het .htaccess-bestand. Het is soms verborgen, dus zorg ervoor dat u alle bestanden bekijkt, inclusief verborgen bestanden. Als uw server er geen heeft, kunt u er een maken met behulp van een teksteditor. Zorg ervoor dat u een back-up maakt van het .htaccess-bestand als uw server er al een heeft.
Voeg de volgende regels toe aan uw .htaccess-bestand:
ErrorDocument 404 /error/404.php ErrorDocument 403 /error/403.php
De eerste helft (ErrorDocument 404) vertelt de server dat we de locatie van het 404-foutdocument gaan definiëren. De tweede helft definieert de daadwerkelijke locatie van het foutdocument. In dit geval zullen we het in de "error" -directory plaatsen en respectievelijk 404.php en 403.php noemen.
Sla nu het .htaccess-bestand op en upload het naar de hoofdmap van het document.
Het is het beste om bij hetzelfde ontwerp te blijven als uw website al gebruikt, zodat u uw bezoekers niet in verwarring brengt en het risico loopt ze kwijt te raken. U moet ook nuttige elementen opnemen, zoals een beleefd foutbericht, voorgestelde links, een zoekfunctie of een link naar uw sitemap. Deze functies zijn afhankelijk van het niveau van de inhoud van uw website en wat u denkt dat het nuttigst zal zijn.
Zoals u hieronder kunt zien, heeft de 404 niet gevonden pagina voor Nettuts + de fout aangegeven en de zoekfunctie benadrukt door deze in de hoofdtekst onder het foutbericht op te nemen. Je kunt dit een stap verder brengen door een korte lijst met links naar mogelijke pagina's op te nemen die de bezoeker kunnen aanmoedigen om meer van de site te blijven verkennen (hou het eenvoudig en kort) - of zelfs een humoristisch beeld (iedereen houdt van lachen toch? ). Voor kleine websites kan het een goed idee zijn om ook een zichtbare sitemap op te nemen.
Hier is iets wat ik voor deze zelfstudie heb samengesteld die je ook voor je website kunt gebruiken (inbegrepen in de download hierboven). Het is heel eenvoudig, dus u kunt de inhoud ervan direct in uw bestaande websitesjabloon plaatsen. Zoals je kunt zien, heb ik geprobeerd een beetje een humoristisch element op te nemen, terwijl ik ook de fout beleefd vermeldde en een aantal opties bevatte om de bezoeker te helpen vinden wat ze zochten of verder te gaan op de website..
U zult merken dat het niet de HTTP-foutcode opgeeft in de hoofdtekst van de pagina. In plaats daarvan heb ik ervoor gekozen om alleen de foutcode in de titel van de pagina te gebruiken. De reden hiervoor is om dingen zo eenvoudig en gebruiksvriendelijk mogelijk te houden. De meeste mensen geven er niet om wat 404 of 403 betekent, ze willen weten wat er gaande is in gewoon Engels. Voor mensen die de foutcode willen, is deze nog steeds beschikbaar via de titel.
Als u een aantal echt geweldige 404 ontwerpen wilt zien:
Dit is het deel van de tutorial waarin sommige webgoeroes misschien ruzie maken. U kunt de logboeken van uw webserver gebruiken om te controleren op foutpagina's en nog veel, veel meer. Waarom kies ik e-mailmeldingen?
Dus met al dat gezegd, laten we doorgaan met de code zullen we!
Eerst maken we een bestand met de naam error-mailer.php, dat zal worden gebruikt om informatie over onze bezoeker te verzamelen en de e-mail te verzenden. Nadat u het bestand hebt gemaakt, zullen we beginnen met het specificeren van onze e-mail- en e-mailinstellingen.
Vervolgens verzamelen we informatie over onze bezoekers, zoals IP-adres, aangevraagde URI, User Agent, enz. De volgende code verzamelt die informatie.
# Verzamel bezoekersinformatie $ ip = getenv ("REMOTE_ADDR"); // IP-adres $ server_name = getenv ("SERVER_NAME"); // Servernaam $ request_uri = getenv ("REQUEST_URI"); // Gevraagde URI $ http_ref = getenv ("HTTP_REFERER"); // HTTP Referer $ http_agent = getenv ("HTTP_USER_AGENT"); // User Agent $ error_date = date ("D M j Y g: i: s a T"); // FoutdatumNu zullen we het script schrijven om de informatie naar ons te e-mailen met de eerder gespecificeerde details.
# Stuur de e-mail notificatie require_once ('phpMailer / class.phpmailer.php'); $ mail = nieuwe PHPMailer (); $ mail-> From = $ from_email; $ mail-> FromName = $ from_name; $ mail-> Subject = $ email_subject; $ Mail-> AddAddress ($ to_email); $ mail-> Body = "Er was een fout". $ error_code. "op de". $ server_name. "domain". "\ N \ nDetails \ n ------------------------------------------- ---------------------------". "\ nWanneer:". $ fout_datum. "\ n (die) IP-adres:". $ ip. "\ n (Wat) probeerde toegang te krijgen: http: //". $ server_name. $ request_uri. "\ n (vandaar) HTTP Referer:". $ http_ref. "\ n \ nUser-agent:". $ http_agent; $ Mail-> Send (); ?>We gebruiken de phpMailer-klasse om dit te doen, zoals aangetoond door Jeffrey via de ThemeForest-blog om een mooi AJAX-contactformulier te maken. Deze versie van de phpMailer-klasse is voor PHP 5/6 dus als uw server PHP 4 gebruikt, moet u de overeenkomstige versie gebruiken door deze hier te downloaden.
404.php en 403.php Foutpagina's
Het laatste wat we moeten doen is de foutpagina's aanpassen die we eerder hebben gemaakt door de juiste headers te verzenden en de variabele $ error_code in te stellen door de volgende code aan het begin van elke pagina in te voegen (gescheiden door -------).
-------Wat we hier als eerste doen, is het instellen van de juiste HTTP-header om respectievelijk 404 Not Found en 403 Forbidden te retourneren. Wanneer zoekmachines per ongeluk op deze pagina terechtkomen, willen we ervoor zorgen dat ze weten wat voor pagina het is, in plaats van te denken dat dit een normale webpagina is met de naam 404.php of 403.php.
Vervolgens geven we de foutcode op die moet worden gebruikt in het mailerscript en bevat het mailscript zodat het zijn werk kan doen. Op deze manier hoeven we, als we het mailerscript wijzigen, slechts één bestand te bewerken in plaats van twee of meer (als u extra aangepaste foutpagina's instelt).
Conclusie
Daar heb je het! Uw eigen aangepaste foutpagina's die zoekmachine vriendelijk zijn, en u laten weten via e-mail wanneer u een bezoeker heeft gehad, evenals alle informatie die u nodig hebt om eventuele problemen op te lossen. Een paar laatste dingen om te overwegen:
- Internet Explorer vereist foutpagina's die ten minste 512 bytes groot zijn (als u de voorbeeldbestanden gebruikt, komt alles goed)
- Veelbezochte websites kunnen heel veel e-mails genereren, dus zorg ervoor dat je een soort e-mailfilter instelt voor deze foutmeldingen zodat ze je inbox niet overspoelen. Ik gebruik Gmail, dus ik heb alleen een label- en filterconfiguratie voor deze e-mails.