Avatar billede carstensuurland Nybegynder
30. maj 2005 - 11:07 Der er 6 kommentarer og
2 løsninger

"Userfriendly URLs"

Hej Eksperter

Jeg vil gerne, i ASP, benytte såkaldte "brugervenlige url'er".
Dvs. i stedet for www.xxx.dk/display.asp?id=123, vil jeg gerne give brugeren mulighed for at skrive www.xxx.dk/side.

P.t. opnår jeg dette ved at oprette en lang række virtuelle directories, med tilhørende default.asp'er, men det erlidt tungt at administrere.

Derfor:
Kan jeg implementere disse brugervenlige url'er på en anden måde?
F.eks. en skræddersyet 404 side eller lignende?

Det jeg helst vil, er at lave én side som opfanger alle "ugyldige" url'er og konverterer dem til en rigtig url. Håber I forstår?
Avatar billede keysersoze Ekspert
30. maj 2005 - 12:03 #1
som du selv siger så er en 404-side vejen frem - og det kan gøres på mange måder.

normalt plejer jeg at fange hvad der står i url'en så fx www.domain.dk/underside viderestilles til domain.dk/?site=underside vha response.transfer og på default.asp inkluderer jeg så underside.asp

er det nogle databasestyrede ting så brug din 404 til at lave opslag i databasen så fx www.domain.dk/underside slår "underside" op i databasen og finder det passende id (fx 123) og det så er det der stilles videre til default.

Der er rigtig mange muligheder for hvordan det kan bygges op - hvordan du skal gøre afhænger helt af din mappe- og filstruktur, hvor meget der er database etc.
Avatar billede ldanielsen Nybegynder
30. maj 2005 - 12:04 #2
Ja, hvis du laver en 404 side som er en asp-side så kan du fange hvilken URL der er kaldt:

<%
Dim strSidenDerErKaldt = Request.ServerVariables("SCRIPT_NAME")
%>

Og udfra det kan du redirecte, eller vise en 404 besked

Vent lige lidt ...
Avatar billede ldanielsen Nybegynder
30. maj 2005 - 12:22 #3
Nej sådan er det:

<%@ Language=VBScript %>
<%
Dim strSidenDerErKaldt
strSidenDerErKaldt = Split(Request.QueryString, ":80")(1)

if strSidenDerErKaldt = "/side" then
  Response.Redirct("virkeligside.asp?id=234")
  Response.End
end if


Response.Write "404 Fejl, check urlen"

%>

Så skal du bare have sat serveren op til det:
I IIS Manager finder du dit website, højreklikker og vælger Propreties. Under fanen Custom Errors finder du 404, markerer den og klikker edit. Vælg URL, og tast urlen på din "404.asp" eller hvad den nu hedder.

så skulle den være der
Avatar billede ldanielsen Nybegynder
30. maj 2005 - 12:24 #4
Undskyld, havde ikke set keysersoze var først :o)
Avatar billede carstensuurland Nybegynder
30. maj 2005 - 15:55 #5
I får begge point! Tak for det. Som et ekstraspørgsmål: Ved I hvordan søgemaskiner m.v. vil håndtere disse 404 sider? Kan den finde ud af at indeksere dem korrekt?
Avatar billede keysersoze Ekspert
30. maj 2005 - 16:39 #6
hvis du viderestiller på serveren - altså server.transfer - så vil google læse de links du sætter i din href fx "www.domain.dk/underside".

Det er dog vigtigt i et tilfælde med en custom 404 er, at din fejlside som du jo så selv skal hen og programmere giver status 404 tilbage så søgemaskinerne kan smide de gamle links ud.
Avatar billede ldanielsen Nybegynder
30. maj 2005 - 21:54 #7
Det var da vist keysersoze der var eksperten her, så lærte jeg også noget i dag :o)

Hvad med min:
strSidenDerErKaldt = Split(Request.QueryString, ":80")(1)

- er der en "pænere" måde at gøre det på?
Avatar billede keysersoze Ekspert
31. maj 2005 - 18:27 #8
kommer meget an på hvad man vil - mener jeg plejer at bruge noget a la

strRef = Request.ServerVariables("QUERY_STRING")
tmpRef = split(strRef, "/")
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