Sebastian: Server Side Includes Problem <!--#include ...

Hallo zusammen,

habe mich vor einigen Tagen schon mal ( http://forum.de.selfhtml.org:81/archiv/2002/10/25902/) zu SSI erkundigt und auch gute Antworten bekommen.

Nach einigem Weiterbilden und Basteln habe ich nun das Problem, dass der Inhalt, den ich gerne per SSI in meine html-Seite einbauen möchte, nicht eingefügt wird.

Konkret:
Diese Datei (bitte keine Kommentare zu nicht-konformem html - ist die Kurzform!)

* * * * * * * * * * * *
<html>
<head>
</head>
<body>
<table border="0" width="763" cellpadding="0" cellspacing="0">
  <tr>

<!-- NAVIGATIONSLEISTE PER SSI -->

<td valign="top" width="160">
          <img src="http://www.glowik.de/bilder/blank.gif" width="1" height="25" border="0"><br>

<!--#include virtual="/includes/nav.shtml"-->

<br>
    </td>

<!-- restliche Spalten -->
    <td>
    </td>
    <td>
    </td>
  </tr>
</table>
</body>
</html>
* * * * * * * * * * * *

referenziert die im Unterverzeichnis includes liegende Datei nav.shtml, die so aussieht

* * * * * * * * * * * *
      <table width="143" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="20" valign="bottom" align="left">  <a href="#">Home</a></td>
        </tr>
        <tr>
          <td height="20" valign="bottom" align="left">  <a href="#">Anmeldung</a></td>
        </tr>

<!-- undsoweiter -->

</table>
</body>
</html>
* * * * * * * * * * * *

Kann mir jemand sagen, warum das nicht funktioniert?  Bin an des Lateiners Ende :-/ und glaube, alles nach bestem Wissen richtig gemacht zu haben....

Dank im Voraus -
Sebastian

  1. <!--#include virtual="/includes/nav.shtml"-->

    referenziert die im Unterverzeichnis includes liegende Datei nav.shtml, die so aussieht

    Bei /includes/nav.shtml liegt nav.shtml zwar im Verzeichnis includes, aber falls Du meinst, mit /includes ein Unterverzeichnis der aktuellen Datei anzusprechen, bist Du auf dem Holzweg; / ist das alleroberste Oberverzeichnis des Systems. Du möchtest wahrscheinlich lieber includes/nav.shtml haben.

    Gruß,
      soenk.e

    1. Hallo soenk.e

      Bei /includes/nav.shtml liegt nav.shtml zwar im Verzeichnis includes, aber falls Du meinst, mit /includes ein Unterverzeichnis der aktuellen Datei anzusprechen, bist Du auf dem Holzweg; / ist das alleroberste Oberverzeichnis des Systems. Du möchtest wahrscheinlich lieber includes/nav.shtml haben.

      Danke dafür. Habe es nun einmal ohne / probiert und danach mit dem korrekten Serverpfad. Leider wird immer noch nichts eingefügt. Any ideas?

      Sebastian

      1. / ist das alleroberste Oberverzeichnis des Systems.

        Muss mich da korrigieren: / kennzeichnet das Wurzelverzeichnis des Webservers. Der angebenene Pfad entspricht also der URL, die man im Browser eingeben würde, um die jeweilige Datei zu erreichen. Liegt Deine Datei beispielsweise in /home/xyz/test/test.html und der Webserver startet in /home/xyz (sprich: http://server.de/ zeigt auf /home/xyz), dann würde <!--#include virtual="/" --> /home/xyz/ bedeuten.

        Danke dafür. Habe es nun einmal ohne / probiert und danach mit dem korrekten Serverpfad. Leider wird immer noch nichts eingefügt. Any ideas?

        Wirf mal einen Blick in die Fehlerliste Deines Servers (Apache: error_log). Wenn der Server die einzufügende Datei nicht findet, sollte dort ein genauerer Hinweis auftauchen. Ist da nichts zu sehen, könnte der include-Befehl falsch sein (und nicht erkannt werden) oder der Dateiinhalt ist zwar da, wird aber nicht angezeigt (HTML-Syntax).

        Gruß,
          soenk.e

        1. Muss mich da korrigieren: / kennzeichnet das Wurzelverzeichnis des Webservers.

          Ok - funktioniert aber trotzdem nicht...

          Wirf mal einen Blick in die Fehlerliste Deines Servers (Apache: error_log).

          Komm ich leider nicht dran :-/

          Ist da nichts zu sehen, könnte der include-Befehl falsch sein

          der ist aus den von dir vorgeschlagenen Dokus abgepinnt - müsste also korrekt sein.

          oder der Dateiinhalt ist zwar da, wird aber nicht angezeigt

          Wenn ich nicht über <!--#include gehe, sondern den im ersten Posting dargestellten Dateiinhalt direkt eingebe, wird's ja auch angezeigt. Korrekt müsste es alo sein. Was ich allerdings nicht gefunden habe: Wie muss die "zu includende" .shtml konkret aussehen? Muss sie auch über einen Header verfügen?

          Danke -
          Sebastian

          1. Wirf mal einen Blick in die Fehlerliste Deines Servers (Apache: error_log).
            Komm ich leider nicht dran :-/

            Keine access_- und error_log? Pfui :)

            Ist da nichts zu sehen, könnte der include-Befehl falsch sein
            der ist aus den von dir vorgeschlagenen Dokus abgepinnt - müsste also korrekt sein.

            Hast Du das Leerzeichen am Ende mit drin, wie Jojo in <?m=145598&t=26694> geschrieben hat?

            oder der Dateiinhalt ist zwar da, wird aber nicht angezeigt
            Wenn ich nicht über <!--#include gehe, sondern den im ersten Posting dargestellten Dateiinhalt direkt eingebe, wird's ja auch angezeigt. Korrekt müsste es alo sein.

            In der Tat.

            Was ich allerdings nicht gefunden habe: Wie muss die "zu includende" .shtml konkret aussehen? Muss sie auch über einen Header verfügen?

            Nein, nicht nötig. Es muß übrigens auch keine .shtml-Datei sein, die eingefügt wird. Probier auch einfach mal .html oder .txt.

            Letzte Vermutung: Funktioniert nur include nicht oder funktioniert möglicherweise überhaupt kein SSI? Probier mal die anderen Befehle, <!--#printenv --> zum Beispiel.
            Wenn allerdings SSI nicht aktiv wäre, müssten die SSI-Befehle in der Seite auftauchen.. Aber das weder die Befehle auftauchen noch etwas ausgeführt wird, ist schon reichlich mysteriös.

            Kann man sich Quelltext und Ergebnis irgendwo ansehen?

            Gruß,
              soenk.e

  2. Hallo,

    <!--#include virtual="/includes/nav.shtml"-->

    Soweit ich mich erinnere, muss vor dem abschließenden Kommentartag --> ein Leerzeichen stehen, damit dieser nicht als Teil des SSI-Befehls interpretiert wird.
    Also:

    <!--#include virtual="/includes/nav.shtml" -->

    Gruss Jojo