Koden hämtar det sista '/'-tecknet i urlStr och returnerar all text till vänster om det tecknet.
urlStr = left(urlStr, instrRev(urlStr,"/"))
7 svar · 417 visningar · startad av Baltiz
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?
Koden hämtar det sista '/'-tecknet i urlStr och returnerar all text till vänster om det tecknet.
urlStr = left(urlStr, instrRev(urlStr,"/"))
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.
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, "/")
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?
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?
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.
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.