Virtuelles Verzeichnis-Aufruf zu Script schicken
Joerg Kulow
- asp.net
0 Thomas Mell0 Joerg Kulow0 Thomas Mell0 Calocybe0 Joerg Kulow0 Calocybe
Hallo,
hier mein Problem:
Ich moechte den Seitenaufruf "http://www.mydomain.de/12345678" auf diese URL "http://www.andereDomain.de/scripts/run.dll?Login:12345678" weiterleiten.
Dies duerfte noch kein Problem sein.
Die Nummer "12345678" ist aber keine konstante Zahl, sondern immer unterschiedlich ( 2 Mio. Variationen) und deshalb moechte ich keine Verzeichnisse anlegen.
Das alles soll auf "Microsoft Internet Information Server" laufen.
Hat jemand eine Idee wie ich dieses Problem loesen kann.
Kann man dies mit ASP machen oder unterstuetzt der IIS so etwas?
Vielen Dank fuer Eure Hilfe
Joerg
Hallö,
mit "http://www.mydomain.de/12345678" wird es nicht funzen, da der IIS dann in dem Verzeichnis "12345678" nach einer Startdatei sucht. Da das Verzeichnis natürlich nicht existiert, gibt es eine Fehlermeldung. Vieleicht hast du die Möglichkeit es mit "http://www.mydomain.de?12345678" zu machen, dann geht es ganz leicht mit ASP:
Response.Redirect("http://www.andereDomain.de/scripts/run.dll?Login:" & Request.Querystring())
cucu
Thomas
»» Vieleicht hast du die Möglichkeit es mit "http://www.mydomain.de?12345678" zu machen, dann geht es ganz leicht mit ASP
Die Moeglichkeit habe ich nicht. Aber ich habe schon eine Idee, ich missbrauche den Server-Error "404". Diese Loesung ist wohl nicht ganz sauber, aber sie funktioniert.
Jetzt ist nur noch die Frage, wie kann ich die URL aufrufen ohne das der User was davon merkt. Ich denke da an ein Frameset.
Ich weiss nur noch nicht wie das mit dem Frameset funktionieren kann.
Weiss jemand Rat?
Hier mein bisheriger Versuch:
---------------------------
<% @Language=VBScript %>
<% Option Explicit %>
<% Response.Buffer = True %>
<HTML>
<HEAD>
<TITLE>Bounce</TITLE>
</HEAD>
<BODY>
<%
Dim name
Dim bounceurl
Dim Tools
Dim varDate
Dim iRequest
name = Mid( Request.ServerVariables("QUERY_STRING"),23,8)
varDate = Time
Select Case Second(varDate)
Case 1,7,13,19,25,31,37,43,49,55
iRequest = "www.andereDomain1.de/scripts/run.dll?Login:"+name
Case 2,8,14,29,26,32,38,44,50,56
iRequest = "www.andereDomain2.de/scripts/run.dll?Login:"+name
Case 3,9,15,21,27,33,39,45,51,57
iRequest = "www.andereDomain3.de/scripts/run.dll?Login:"+name
Case 4,10,16,22,28,34,40,46,52,58
iRequest = "www.andereDomain4.de/scripts/run.dll?Login:"+name
Case 5,11,17,23,29,35,41,47,53,59
iRequest = "www.andereDomain5.de/scripts/run.dll?Login:"+name
Case else
iRequest = "www.andereDomain6.de/scripts/run.dll?Login:"+name
end Select
' They just linked from outside of the site
' Flush Response Buffer
Response.Redirect( iRequest)
Response.Flush %>
%>
</BODY>
</HTML>
---------------------------
Dies funktioniert nur, wenn der User den vollen Domainnamen angibt. Laesst er "www." weg, habe ich ein Problem. Wie kann ich das abfangen?
Joerg
Hallö,
Jetzt ist nur noch die Frage, wie kann ich die URL aufrufen ohne das der User was davon merkt. Ich denke da an ein Frameset.
Ich weiss nur noch nicht wie das mit dem Frameset funktionieren kann.
Erzeuge doch einfach den kpl. Frameset mit ASP dynamisch und überschreibe ihn bei jedem Aufruf. Anschließend brauchst du ihn nur noch mit einem Redirect aufrufen.
Dies funktioniert nur, wenn der User den vollen Domainnamen angibt. Laesst er "www." weg, habe ich ein Problem. Wie kann ich das abfangen?
Ich gehe mal davon aus das der Domainname in der Variabel "name" enthalten ist.
Dann überprüfe diese Variabel ob "www." enthalten ist, und wenn nicht dann hänge eben dies vorne an.
If LEFT(name, 4) <> "www." Then name = "www." & name
oder
If INSTR(name, "www.") < 1 Then name = "www." & name
cucu
Thomas
Erzeuge doch einfach den kpl. Frameset mit ASP dynamisch und überschreibe ihn bei jedem Aufruf. Anschließend brauchst du ihn nur noch mit einem Redirect aufrufen.
Ich bin noch etwas unbeholfen mit ASP. Hast Du ein Beispiel fuer mich?
Dann überprüfe diese Variabel ob "www." enthalten ist, und wenn nicht dann hänge eben dies vorne an.
Danke, baue ich ein.
Viele Gruesse
Joerg
Hi!
Dies funktioniert nur, wenn der User den vollen Domainnamen angibt. Laesst er "www." weg, habe ich ein Problem. Wie kann ich das abfangen?
Also dieses Script willst Du anstelle der error404-Datei einsetzen, richtig? Dann sag doch bitte mal, was noch als QueryString mitgegeben wird. Offensichtlich ist ja dort der urspruengliche Request angegeben, sonst haettest Du das
name = Mid( Request.ServerVariables("QUERY_STRING"),23,8)
nicht gemacht.
Jetzt ist nur noch die Frage, wie kann ich die URL aufrufen ohne das der User was davon merkt. Ich denke da an ein Frameset.
Ich weiss nur noch nicht wie das mit dem Frameset funktionieren kann.
Also ich wuerde sagen, entweder Frameset oder Redirect, da musst Du Dich entscheiden. Bei der zweiten Moeglichkeit wird auf jeden Fall die neue URL in der Location bar des Browsers zu sehen sein. Fuer ein Frameset musst Du halt sowas in der Art ausgeben:
<FRAMESET ROWS="100%,%" [und weitere Angaben]>
<FRAME SRC="<%=name%>" [weitere Angaben]>
</FRAME>
Fuer die Angaben, die man bei Frames so alle machen kann, schau mal bei <../../tcib.htm>.
Calocybe
Also dieses Script willst Du anstelle der error404-Datei einsetzen, richtig? Dann sag doch bitte mal, was noch als QueryString mitgegeben wird. Offensichtlich ist ja dort der urspruengliche Request angegeben, sonst haettest Du das
name = Mid( Request.ServerVariables("QUERY_STRING"),23,8)
nicht gemacht.
Genau, so ist es.
Der User ruft nur "http://www.mydomain.de/12345678" auf. Dies war fuer mich die einzige Moeglichkeit die 8-stellige Nummer an die andere URL anzuhaengen.
Hast Du einen anderen Vorschlag?
Das mit dem Frameset schaue ich mir nochmal an.
Danke
Joerg
Hallo!
Hast Du einen anderen Vorschlag?
Nein, ich finde die Idee gut. Meine Frage war nur, was genau diesem "Error-Handler" als QueryString uebergeben wird. Nun, wenn ich mir diese Zeile nochmal genau anschaue,
name = Mid( Request.ServerVariables("QUERY_STRING"),23,8)
dann nehme ich an, dass die 404-Datei schlicht und einfach mit
error404.asp?http://www.mydomain.de/12345678
aufgerufen wird, denn Du wolltest dieses 123465678 ausschneiden (hast Dich aber um eine Stelle vertan, es faengt erst bei 24 an (bei Basic-Strings hat das erste Zeichen die Nummer 1, nicht 0)).
Nun, wenn diese "Verzeichnisse" immer aus 8 Ziffern bestehen, kannst Du mit
s = Request.ServerVariables("QUERY_STRING")
s = mid(s, 7) ' schneidet "http://" weg
s = mid(s, instr(s, "/")+1, 8) ' sucht den ersten / und nimmt die 8 Zeichen _dahinter_
Response.Redirect("http://www.andereDomain.de/scripts/run.dll?Login:" & s)
die Sache erledigen.
Viel Spass beim Ausprobieren
Calocybe