webForumDet fria alternativet

Detektera url i asp

ASP

7 svar · 417 visningar · startad av Baltiz

Medlem sedan maj 200591 inlägg
Frågan#1

Jag undrar om det finns någon metod att för att få reda på vilken adress det är till sidan som anropats som klarar av nedanstående lilla exempel.

Antag att adressen är http://www.namn.se/qwerty/default.asp. I detta fallet går det ju lätt att få ut adressen genom att använda servervariablerna SERVER_NAME eller HTTP_HOST i kombination med PATH_INFO, SCRIPT_NAME eller URL.

Antag nu istället att adressen är http://www.namn.se/qwerty/. Fortfarande är det ju filen default.asp som laddas, och de servervariabler jag räknade upp returnerar följdaktligen "/qwerty/default.asp", precis som tidigare. Men antag att jag i just detta fallet istället vill ha resultatet "/qwerty/". Hur löser man detta?

Medlem sedan dec. 20003 563 inlägg
#2

Koden hämtar det sista '/'-tecknet i urlStr och returnerar all text till vänster om det tecknet.

urlStr = left(urlStr, instrRev(urlStr,"/"))
Medlem sedan maj 200591 inlägg
#3

Jo, fast det hjälper mig inte i detta fallet. Jag vet ju fortfarande inte om det är / eller /default.asp som står i adressfältet.

Medlem sedan dec. 20003 563 inlägg
#4

Jaha. Nu tror jag att jag ser frågan.

str = "http://www.namn.se/qwerty/default.asp"

En idé kan vara att förenkla strängen genom att ta bort det ointressanta.

domain = "http://www.namn.se/"
str = replace(str,domain,"")
if instr(str, "default.asp") then 
  str = left(str, instrRev(urlStr,"/"))
end if

Sen kan du alltid dela upp strängen till en array där varje element innehåller ett katalognamn.

arr = split(str, "/")
Medlem sedan maj 200591 inlägg
#5

Ok, ser att jag formulerade mig lite oklart i första inlägget. Problemet är alltså det att jag vill kunna avgöra om scriptet triggades med adressen / eller /default.asp. Att jag kan få fram sökvägen utan default.asp genom att använda instrrev osv vet jag, men hur vet jag på vilket sätt scriptet triggades?

Medlem sedan juni 200032 967 inlägg
#6

Vad jag vet finns ingen servervariabel som hjälper dig med detta. Med javascript på klientsidan kan du få veta det dock (och då skicka det till servern på lämpligt sätt:

<script>
sPath = document.location;
// gör något med sPath;
</script>

Vad ska du göra med informationen?

Medlem sedan maj 200591 inlägg
#7

Den server min sida ligger på har inte stöd för mod_rewrite. Anledningen är helt enkelt att jag vill göra en 301-redirect så att man inte hamnar i googles duplicate content-filter.

Har också funderat på om man skulle köra med javascript, men då funkar det ju lik förbannat inte med robotar och liknande eftersom de inte har javascriptstöd. Jag får väl helt enkelt inse att det jag vill inte går att göra.

Jag antar att de som använder mod_rewrite har samma problem med att få reda på vilken adress det var användaren egentligen skrev in.

Medlem sedan maj 200591 inlägg
#8

Samma fråga, annan formulering.

Requesten som skickas till servern ser ut typ såhär

GET /qwerty/ HTTP/1.1
Accept: */*
Accept-Language: sv
Connection: Keep-Alive
Host: www.räksmörgås.se
User-Agent: Mozilla/4.0

Finns det något sätt att hämta den första raden av request-headern? Att hämta resterande rader är ju inget problem.

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)