Florian: ASP per SSI in SHTML inkludiert -> nur Sourcecode wird angezeigt

Hallo!

Ich habe eine kleine ASP-Seite programmiert und wollte diese mit SSI (#include virtual) in eine SHTML-Seite einbinden, es wird aber nur der Quelltext hineinkopiert - die ASP also nicht durchgeführt.

Die SHTML möchte ich nicht in ASP umbenennen damit ich nicht bei einem späteren Umzug auf z.B. Linux mit PHP alle Verweise ausbessern muss.

Was muss ich machen, damit der Code vor dem Inkludieren durchgeführt wird?

Danke!
lg
Florian

  1. Halihallo

    Ich habe eine kleine ASP-Seite programmiert und wollte diese mit SSI (#include virtual) in eine SHTML-Seite einbinden, es wird aber nur der Quelltext hineinkopiert - die ASP also nicht durchgeführt.

    Das soll er auch nicht, "warum" folgt.

    Die SHTML möchte ich nicht in ASP umbenennen damit ich nicht bei einem späteren Umzug auf z.B. Linux mit PHP alle Verweise ausbessern muss.

    ACK.

    Was muss ich machen, damit der Code vor dem Inkludieren durchgeführt wird?

    Das geht IMHO nicht mit SSI. SSI includiert _nur_ ASP-Quellcode. Du musst die Server.Execute - Methode benutzen:

    <%
       Server.Execute( "hello.asp" )
    %>

    dann sollte es, glaub ich, funktionieren (obwohl mein ASP etwas eingerostet ist).

    BTW: Beim SSI-include für ASP-Includes, sollte man _NIE_ die Extension .inc verwenden, auch wenn dies von M$ so vorgeschlagen wird. Warum? - Richtig, jeder kann beim normalen HTTP-Request auf diese Seiten als Quellcode zugreifen, was verherend wäre. Deshalb sollte man auch die .inc Dateien mit .asp Extension versehen und diese über SSI einbinden => da die .asp-Datei _nicht_ interpretiert wird, passiert genau das selbe, wie bei .inc, aber beim HTTP-Request auf diese Datei erscheint nur ein weisser Bildschrim (und eben nicht der Quellcode). That's it.

    Vielleicht gibt's trotzdem einen Weg über SSI, aber der ist mir leider nicht bekannt. Aber vielleicht hilft dir ja Server.Execute weiter.

    Viele Grüsse

    Philipp

    1. Was muss ich machen, damit der Code vor dem Inkludieren durchgeführt wird?

      Das geht IMHO nicht mit SSI. SSI includiert _nur_ ASP-Quellcode. Du musst die Server.Execute - Methode benutzen:

      <%
         Server.Execute( "hello.asp" )
      %>

      Nee, das wird (meines Wissens und Versuchs nach) nur in einer ASP-Datei ausgeführt. Aber ich werde mir das gleich merken wenn ich mal so einen Fall habe.

      lg,
      Florian

      1. Re: Halihallo

        Das geht IMHO nicht mit SSI. SSI includiert _nur_ ASP-Quellcode. Du musst die Server.Execute - Methode benutzen:

        <%
           Server.Execute( "hello.asp" )
        %>

        Nee, das wird (meines Wissens und Versuchs nach) nur in einer ASP-Datei ausgeführt. Aber ich werde mir das gleich merken wenn ich mal so einen Fall habe.

        Ja, das ist natürlich richtig. 'tschuldige, dass ich nicht darauf hingewiesen habe. Aber da ich _keine_ Lösung über SSI kenne, habe ich das Problem eben "frech wie ich bin" auf ASP ausgelagert, ohne dich darüber zu informieren...
        Aber wie Sven bereits gesagt hat: Du musst ja eh (beim Umsatteln auf php) alles neu programmieren, dass es nun hier über ASP und nicht SSI includiert wird spielt dann wohl eine unbedeutende Rolle.

        Viele Grüsse

        Philipp

  2. Moin!

    Ich habe eine kleine ASP-Seite programmiert und wollte diese mit SSI (#include virtual) in eine SHTML-Seite einbinden, es wird aber nur der Quelltext hineinkopiert - die ASP also nicht durchgeführt.

    SSI kopiert die angegebene Datei Byte für Byte in den Ausgabedatenstrom - ausgeführt wird da nichts. Du kriegst also den Quellcode angezeigt (sofern der mit HTML-Mitteln irgendwie darstellbar ist).

    Abgesehen davon: Du kannst keine komplette HTML-Seite (auch wenn sie mit ASP generiert wird) mit SSI irgendwo einfügen, wenn du nicht ansonsten keine weitere Ausgabe machst. Ansonsten hast du doppelte Tags in der Seite, die definitiv böse sind.

    Wenn die SHTML-Datei einzig aus der SSI-Einbindung besteht, und sonst nichts macht, dann hast du irgendein Prinzip nicht so ganz verstanden.

    Die SHTML möchte ich nicht in ASP umbenennen damit ich nicht bei einem späteren Umzug auf z.B. Linux mit PHP alle Verweise ausbessern muss.

    Hast du wirklich eine (z.B.) index.shtml als Linkziel und index.asp als Seitengenerator (ersatzweise später auch index.php), und verlinkst nur die shtml-Datei?

    Dann solltest du lieber den Server für dich arbeiten lassen.

    Drei Ideen:

    1.) Mach in der index.shtml ein Meta-Refresh auf die ASP-Datei.

    2.) Benutze Content-Negotiation und Multiviews. Du verlinkst nur auf "/index", und der Server sucht selbständig nach Dateien, die mit "index" anfangen, aber beliebige Dateiendungen haben. Dann ist es egal, ob die Index-Datei auf .html, .shtml, .asp oder .php endet.

    3.) Benutze URL-Rewriting, um alle Zugriffe auf *.html-Dateien umzubiegen auf *.asp (und später auf *.php) - eventuell angereichert um die Option, dieses nur zu tun, wenn keine *.html-Datei vorhanden ist.

    Ich denke, dein Argument mit dem Linkumbiegen bei evtl. späterer Umstellung wiegt nicht ganz so schwer: Wenn du auf PHP umstellst, mußt du ohnehin fast alles neuprogrammieren (ASP ist nicht kompatibel). Einzig Links von externen Seiten würden ins Leere laufen. Das kann man aber mit Methode 2 oder 3 sehr gut verhindern, weil die URL dort einfach einen Sinnzusammenhang besitzt, aber nicht angibt, welche serverseitige Technik dahintersteht, um HTML zu erzeugen.

    - Sven Rautenberg

    1. Hallo!

      SSI kopiert die angegebene Datei Byte für Byte in den Ausgabedatenstrom - ausgeführt wird da nichts. Du kriegst also den Quellcode angezeigt (sofern der mit HTML-Mitteln irgendwie darstellbar ist).

      Schade, aber klar.

      Abgesehen davon: Du kannst keine komplette HTML-Seite (auch wenn sie mit ASP generiert wird) mit SSI irgendwo einfügen, wenn du nicht ansonsten keine weitere Ausgabe machst. Ansonsten hast du doppelte Tags in der Seite, die definitiv böse sind.

      Hatte ich auch nicht vor, die ASP generiert nur das Codefragment das ich benötige.

      Hast du wirklich eine (z.B.) index.shtml als Linkziel und index.asp als Seitengenerator (ersatzweise später auch index.php), und verlinkst nur die shtml-Datei?

      Hatte ich vor, vor allem in Hinsicht auf externe Links (da kommt 2/3 meines Traffics her) und Suchmaschinen (wäre interessant ob Google sowas berücksichtigt).

      Dann solltest du lieber den Server für dich arbeiten lassen.

      Drei Ideen:

      [...]

      Würde ich gerne machen, ist aber normaler gehosteter Webspace (kein eigender Server).

      Ich denke, dein Argument mit dem Linkumbiegen bei evtl. späterer Umstellung wiegt nicht ganz so schwer: Wenn du auf PHP umstellst, mußt du ohnehin fast alles neuprogrammieren (ASP ist nicht kompatibel). Einzig Links von externen Seiten würden ins Leere laufen. Das kann man aber mit Methode 2 oder 3 sehr gut verhindern, weil die URL dort einfach einen Sinnzusammenhang besitzt, aber nicht angibt, welche serverseitige Technik dahintersteht, um HTML zu erzeugen.

      Ich will ASP nicht als Hauptsache benutzen, sondern eher zum drüberstreuen, wenn ich mal auf PHP umsiedle werde ich da eher Sachen hinausschmeißen als sie neu zu programmieren. Ich mache die Sachen eher weils mich interessiert wie und womit man das lösen kann.

      Anscheinend muss ich das anders lösen, danke für die Tipps!

      lg
      Florian

      1. Halihallo

        Abgesehen davon: Du kannst keine komplette HTML-Seite (auch wenn sie mit ASP generiert wird) mit SSI irgendwo einfügen, wenn du nicht ansonsten keine weitere Ausgabe machst. Ansonsten hast du doppelte Tags in der Seite, die definitiv böse sind.

        Hatte ich auch nicht vor, die ASP generiert nur das Codefragment das ich benötige.

        Hm. Jetzt wird's aber noch etwas schweiriger :-(
        Du willst mit ASP Code generieren, welchen du dynamisch ins andere ASP-Script importierst und dort ausführst??? - Ei, ei, wenn das mal gut geht. Geht das nicht anders?

        Viele Grüsse

        Philipp