Avatar billede netro Nybegynder
08. maj 2004 - 13:50 Der er 17 kommentarer og
1 løsning

Brugerdefinerede fejlmeddelelse 404

Jeg så på et tidspunkt en artikel om, hvordan man laver en fiktiv URL, ligesom der gøres på Eksperten bl.a. Dvs. at siden www.domaene.dk/spm/3692 kaldes. Den findes ikke, og vi får i stedet vist siden knyttet til "fejl 404", hvor den rigtige side www.domaene.dk/spm.asp?id=3692 kaldes. Kan nogen finde den eller give en opskrift?
Avatar billede ellebaek Nybegynder
08. maj 2004 - 16:49 #1
http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/tips/custerr.mspx

her måske, det er opskriften på brugerdefinerede fejlsider fra microsoft.
Avatar billede netro Nybegynder
08. maj 2004 - 17:10 #2
Nej, det er bare generelt om opsætning af custom errors. Det har jeg styr på. Ellers tak..

Jeg vil gerne have lavet pæne URL'er med mappehierarki fremfor query strings. Denne side hedder fx. http://www.eksperten.dk/spm/497216, selvom mappen "497216" ikke eksisterer fysisk på serveren. I stedet afvikles en side alá http://www.eksperten.dk/spm.php?id=497216 uden at brugeren ænser det.
Avatar billede ellebaek Nybegynder
08. maj 2004 - 21:05 #3
ja, det kan da rimelig nemt tilpasses vil jeg tro..

<%
side = request.servervariables("Script_name")
myarr = split(side, "/")

server.execute(side(1) & ".asp?id=" & side(2))
%>

Noget i den her stil vil jeg tro..
Det vil altså sige at hvis du kalder siden:

www.domain.dk/spm/123456
vil du få:
spm.asp?id=123456

og hvis du kalder:
www.domain.dk/whee/23
vil du få
whee.asp?id=23
Avatar billede netro Nybegynder
09. maj 2004 - 06:03 #4
Nej, det giver mig desværre blot navnet på filen, der er knyttet til fejl 404, og det er i og for sig meget logisk. Kalder vi siden www.domain.dk/spm/123456 (som ikke findes), sendes vi hen til siden error404.asp, og det er her, jeg har brug for "/spm/123456", men i stedet returneres filnavnet "/error404.asp", som jeg ikke har en dyt at bruge til.
Avatar billede netro Nybegynder
09. maj 2004 - 06:29 #5
Har fundet ud af, hvordan vi får den pågældende info hentet. Vi skal blot benytte Request.ServerVariables("Query_String"). Den giver "404;http://www.domain.dk/spm/123456".

Men jeg vil da staid gerne have tips til, hvordan det laves smartest.
Avatar billede ellebaek Nybegynder
09. maj 2004 - 09:28 #6
hmm...

Hvis det er det den returnere så burde dette løse problemet for dig:

<%
side = request.servervariables("QUERY_STRING")
myarr = split(side, "/")

server.execute(side(3) & ".asp?id=" & side(4))
%>

Vil jeg tro..
Avatar billede netro Nybegynder
09. maj 2004 - 14:25 #7
Ikke umiddelbart, da jeg ikke kan bruge querystring i server.execute()..
Avatar billede ellebaek Nybegynder
09. maj 2004 - 20:27 #8
Hvad mener du..?
Avatar billede ellebaek Nybegynder
09. maj 2004 - 20:27 #9
arh...

Min fejl:

<%
side = request.servervariables("QUERY_STRING")
myarr = split(side, "/")

server.execute(myarr(3) & ".asp?id=" & myarr(4))
%>

Prøv sådan her..!
Avatar billede netro Nybegynder
09. maj 2004 - 20:39 #10
Den er den ikke meget for...

Server object error 'ASP 0231 : 80004005'

Server.Execute Error

Invalid URL form or fully-qualified absolute URL was used. Use relative URLs.
Avatar billede ellebaek Nybegynder
09. maj 2004 - 21:06 #11
hmm..

<%
side = request.servervariables("QUERY_STRING")
myarr = split(side, "/")

side = myarr(3) & ".asp?id=" & myarr(4)

server.execute(side)
%>

Prøv sådan her så..
Avatar billede netro Nybegynder
09. maj 2004 - 22:51 #12
Samme resultat, ellebaek...
Avatar billede ellebaek Nybegynder
09. maj 2004 - 22:52 #13
prøv lige at sige:

<%
side = request.servervariables("QUERY_STRING")
myarr = split(side, "/")

side = myarr(3) & ".asp?id=" & myarr(4)
response.write side
response.end


server.execute(side)
%>

Og så vis hvad den skriver..
Avatar billede netro Nybegynder
10. maj 2004 - 09:34 #14
Den er skam god nok. Det var det allerførste, jeg tjekkede. Output'et bliver fx. "default.asp?action=new&type=image"

Men jeg er overhovedet ikke sikker på, at server.execute() understøtter et sådant kald. Umiddelbart ville jeg tro, at "default.asp?action=new&type=image" blot bliver opfattet som hele filnavnet, hvorfor den ikke kan findes. Har du selv brugt metoden sådan før?
Avatar billede netro Nybegynder
22. maj 2004 - 17:19 #15
Jeg har lavet det på en anden måde nu. Tak for indsatsen...
Avatar billede znuggle.com Nybegynder
24. juni 2004 - 11:07 #16
Kan vi få den anden måde vist?
Avatar billede ellebaek Nybegynder
26. juni 2004 - 00:37 #17
ja, jeg vil faktisk også gerne se den så jeg selv kan benytte den på et senere tidspunkt...!
Avatar billede netro Nybegynder
21. oktober 2004 - 16:21 #18
Havde slet ikke set jeres kommentarer...

Jeg har først og fremmest angivet navnet på ASP-filen, der skal håndtere det, under fejl 404 i custom errors.

I denne fil ligger en mængde kode, der udtrækker de fiktive mappenavne i URL'en.
Fx. kan jeg kalde en side med: www.mysite.dk/showuser/234/

Her vil strengen blive splittet ud fra /. Hvis første mappe (i dette tilfælde "showuser") ej er numerisk, så sætter jeg en standard-variabel lig denne værdi. Herefter tjekker jeg, om der findes en mappe med et numerisk navn. Hvis der er det, sætter jeg også her en standard-variabel lig denne værdi (i dette tilfælde "234").

Det svarer til at lave et normalt kald med en række parametre i adressen. Fx:
www.mysite.dk/default.asp?action=showuser&id=234

Ud fra disse standard-variabler kan der nu opstilles en samling betingelser, der inkluderer andre filer og kører diverse scripts.

Jeg har lavet det en del mere komplekst og avanceret end vist her, men det er grundidéen i det. Håber det var svar nok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester