Thomas: Probleme mit SSI Pfadangabe

Hallo,
ich habe folgendes Problem.

Ich habe eine Website wo ich das Menü mittels SSI auslagere.

Das funktioniert auch alles bei den Seiten, wo die Pfadangabe zur SSI Datei auf der gleichen Ebene liegt.

Hier ist der include Befehl:
<!--#include file="menu.html"-->

Zum Beispiel die index.shtml, welche auf der gleichen Verzeichnisebene ist, findet auch diese Datei menu.html. Jedoch eine Datei welche in einem Ordner liegt z. B. Ordner Name Produkt, mit der HTML Datei produkt.shmtl findet diese menu.html nicht.
Hier der include Befehl für die Datei produkt.shtml im Orndner Produkt:

<!--#include file="../menu.html"-->

Das Menü wird nicht dargestellt, stattdessen steht nur eine Fehlermeldung da, welche wie folgt heißt:

[an error occurred while processing this directive]

Die Pfadangabe stimmt meiner Meinung nach aber, oder muss ich bei SSI diese anders schreiben?

Gruss
Thomas

  1. Hell-O!

    <!--#include file="../menu.html"-->

    So geht es nicht, bei "include file" muss die zu inkludierende Datei im gleichen Verzeichnis oder in einem Unterverzeichnis liegen, Zugriff auf übergeordnete Verzeichnisse ist nicht möglich.

    Die Pfadangabe stimmt meiner Meinung nach aber, oder muss ich bei SSI diese anders schreiben?

    Du musst "include virtual" verwenden, siehe Dokumentation.

    Siechfred

    1. Hallo,
      danke schon mal für die Antwort.

      So geht es nicht, bei "include file" muss die zu inkludierende Datei im gleichen Verzeichnis oder in einem Unterverzeichnis liegen, Zugriff auf übergeordnete Verzeichnisse ist nicht möglich.

      Du musst "include virtual" verwenden, siehe Dokumentation.

      Mein Englisch ist nicht das beste, so dass ich die Beschreibung nicht verstehe unter deinem Link.
      Ich kann aber die Datei nicht ins gleiche Verzeichnis legen, dann muss ich diese ja in jedes meiner Unterverzeichnisse kopieren. Somit kann ich ja bei Veränderungen als Beispiel 14 Mal mein Menü aktualisieren, was ich eigentlich mit ssi vermeiden wollte. Und ohne Unterverzeichnisse ist mir alles zu unübersichtlich auf meiner Seite.

      Gruss
      Thomas

      1. Mein Englisch ist nicht das beste, so dass ich die Beschreibung nicht verstehe unter deinem Link.

        Musst du auch gar nicht, denn der für dich wichtige Teil steht in meiner Antwort:

        Du musst "include virtual" verwenden

        Auf Deutsch gibt's da übrigens auch was in SELFHTML.

        Siechfred

        1. Vielen Dank, hat geklappt :)

    2. Moin!

      Wenn ich das (und http://de.selfhtml.org/servercgi/server/ssi.htm#uebersicht@title=das) richtig verstehe, ist es mit include nicht möglich, die document root zu verlassen, was ich ganz praktisch fände, da ich meine Includes gerne außerhalb der document root ablege.

      Es gibt noch einige Besonderheit im Umgang mit include: Gesetze Variablen werden weitergereicht, d.h. auf Variablen in der Hauptdatei können Includes zugreifen, ebenso können Includes Variablen für die Hauptdatei setzen; Voraussetzung dafür ist allerdings, dass die Includes die Endung für SSI-Dateien besitzen (häufig .shtml). Bei der Verwendung von Content Negotiation, z.B. um mehrsprachige Seiten anzubieten, ist include virtual gegenüber include file im Vorteil: Mit der Notation <!--#include virtual="mein.inc" --> wird automatisch die richtige Include-Datei ausgewählt, also bei einem deutschen Besucher z.B. mein.inc.de.

      Viele Grüße,
      Robert