Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Bygg en egen 404 - file not found sida

Postad 2002-11-10 av Pelle Johansson i sektionen ASP.NET, C#, Okategoriserat med 5 Kommentarer | Läst av: 8432, Betyg: 82%

Förord

På pellesoft har ni säkert sett att om du går till en hemsida som kanske har en felaktig länk så kommer du till en som jag gjort. Detta fel kallas från Internet Information 404- file not found. IIS:en ger dig även möjlighet att göra en egen sida som du kan ersätta den befintliga med och det, på ett väldigt enkelt sätt.
Innehåll
  » Ställ om webbbservern
  » Lite finesser
  » Maila felmeddelandet
  » Lagra felen i en tabell
Relaterade artiklar
  » Bygg en egen 500 - internal server error sida

Förberedelser


I vilken ordning du tar det spelar ingen roll men enklast är om du börjar att konstruera en sida som skall visas när du får ditt 404-fel. Jag tog en standardsida, la dit en ledsam bild samt skrev lite information, exempelvis vem man kontaktar om du upptäcker felet och liknande.

Min sida ser du här 404.asp och denna visas så fort du försöker nå en sida som inte finns på din webbserver. Hur du vill designa din sida, det är upp till dig.

När du har placerat din sida i valfri katalog så se till att om du har referenser och bilder att de får absoluta referenser eftersom sidan kan visas i vilken underkatalog som helst och om du inte har satt referenserna till absoluta så kommer exempelvis inte bilder att visas.


Ställ om webbbservern

Nu när du väl skapat din fil och placerat den på valfritt ställe så är det dags att ställa in webbservern så att då 404-felet uppstår, så laddas din nybyggda sida istället för den som normalt visas.

Starta Internet Tjänstehanteraren via start| Inställningar |Kontrollpanelen |Administrationsverktyg |Internet tjänstehanteraren. När du fått igång den så öppnar du trädet så du kommer till din webbserver. Högerklicka på denna och välj egenskaper.



Nu kommer du in till administrationen av din webbserver och här finner du flera flikar med olika inställningar. Fliken "Anpassade felmeddelanden" är den som vi skall använda oss av nu.



Genom att leta fram det alternativ som heter 404 - så kan du därefter dubbelklicka på det alternativet.



Genom att nu ändra sökvägen för 404 till din egna sida så är du faktiskt klar.



Som jag nämnde i början, det spelar ingen roll i vilken ordning du börjar - men det är inte helt rätt. Filen måste finnas som du anger för annars får du ett felmeddelande.


* Korrigering - ange URL, inte FILE



Lite finesser

För att piffa upp detta lite så kan du faktiskt ta hjälp av lite extrafunktioner. Antingen skickar du ett e-mail till dig själv som säger att någon kommit till denna sida. En annan variant är att lagra ner dessa länkar i en tabell som du sedan kan gå igenom för att rätta upp, valet är ditt.

För er som sysslat med asp ett tag funderar direkt på att man givetvis använder kommandot HTTP_REFERER. Men i detta fall är det inte smart. Anledningen är att IIS:en faktiskt levererar adressen till dig via URL:en som du kan hämta ut.

Jag tog som exempel att skriva 405.asp istället för 404.asp, vilket gav mig denna URL:


http://www.pellesoft.se/include/404.aspx?404;http://www.pellesoft.se/include/405.aspx


Som du vet så kan man hämta ut en hel URL genom att endast skriva Request.QueryString. Genom att göra detta och sedan leta reda på ; så får vi reda på vilken URL som vi försökte nå fast misslyckades.


Sida = Request.Querystring
SidNamn = Mid(sida, Instr(Sida,";")+1)


För detta returneras då: http://www.pellesoft.se/include/405.aspx. Nu vet vi i alla fall vad sidan hette som inte fanns. Nu kommer nästa fråga. Från vilken sida försökte vi kalla på denna sida om det exempelvis var en länk från en annan sida. Nu kommer HTTP_REFERER till sin rätt.


FromPage = Request.ServerVariables("HTTP_REFERER")



Maila felmeddelandet


Denna är den enda information vi behöver. Dels vilken sida vi försökte nå samt den sida vi försökte nå sidan ifrån. Nu kan vi skriva vårt lilla mail som skickas till dig med felet om du exempelvis använder dig av CDONTS som finns default på din webbserver om det är en IIS. (Se: konfigurera IIS för CDONTS)


Sida = Request.Querystring
SidNamn = Mid(sida, Instr(Sida,";")+1)
FromPage = Request.ServerVariables("HTTP_REFERER")

msg = "En användare försökte nå " & _
SidNamn & _
" via länk från " & _
FromPage & "."

Set CDONTS = CreateObject("CDONTS.NewMail")
CDONTS.From = "pelle@pellesoft.nu"
CDONTS.To = "pelle@pellesoft.nu"
CDONTS.Subject = "Sidan saknas"
CDONTS.Body = msg
CDONTS.Send
Set CDONTS = Nothing


Svårare än så är det inte. Använder du JMail eller någon annan 3:e partskomponent så är det bara att anpassa motsvarande kod för ditt mailobjekt.


Lagra felen i en tabell

Om du sedan vill lagra dessa fel i en tabell så kan du skapa en tabell som exempelvis heter LinkError - i denna skapar du några fält, ett id-fält, missing, frompage, samt datestamp. Med en enkel sql-sats kan du addera en post för varje gång sidan eftersöks men inte finns.

Exemplet förutsätter att jag har en connectionsträng som sätts i global.asa och heter Application("DSN").



Set Con = Server.CreateObject("ADODB.Connection")
Con.Open Application("DSN")

' -- SQL / Oracle
Sql = "insert into linkerror " & _
"(missing, frompage, datestamp) " & _
"values('" & sidnamn & "','" & _
fromage & "','" & now & "'"

' -- Access
Sql = "insert into linkerror " & _
"(missing, frompage, datestamp) " & _
"values('" & sidnamn & "','" & _
fromage & "',#" & now & "#"

Con.Execute Sql
Set Con = Nothing


Hoppas detta kan ge er lite ideer att skapa era egna felhanteringssidor nu. Nästa artikel kommer att handla om hur man hanterat 500 - sidan som kräver lite andra funktioner eftersom vi skall presentera vad som är fel i minsta detalj.
Upp

5 Kommentarer


  1. Kristoffer Ljungqvist
    8 nov 2003

    Men är det inte bättre med att köra det som en url via http://adressen/ och på så sätt hämta 404 filen så vissar den ju inte koden. Eller är jag ute och reser?


  2. Johan Djupmarker
    16 nov 2003

    Det verkar vara fel i artikeln, för att källkoden inte ska visas och att man ska få den eftersökta sidan i URL:en måste man ange sidan som en URL istället. Så är det för mig i alla fall.


  3. Kristoffer Ljungqvist
    16 apr 2004

    Jo det är ju klart. Men för en asp ändelse ska funka måste du hämta det från servern. Hämtar du inte det från servern ser du bara koden efter som den inte kan läsa av vad koden betyder typ. Men hämtar du sidan via en server så kan den tolka asp koden och du får ett medelande t.ex c:\inetpub\wwwroot\fel\404.asp det funkar inte då vissar den bara asp koden på sidan. men hämtar du det som http://adressen_till_Sidan/fel/404.asp så utför koden asp koden och du ser inte koden hänger du med? På så sätt funkar det men inte på andra sättet.


  4. Kristoffer Ljungqvist
    16 apr 2004

    Förstår nu. Men tänkte mer på att du mena att man inte skulle hämta asp sidan via url. Men det var så man ska göra och det är rätt som du säger det.


  5. Jonas Boman
    21 maj 2008

    Behöver man ange Response.Status eller görs detta i IIS redan?

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
1 158
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies