SSI-Problem
Michael Jendryschik
- webserver
Hallo zusammen,
basierend auf http://forum.de.selfhtml.org/archiv/2002/9/t23427/ versuche ich, eine Navigation so zu bauen, dass kein Dokument auf sich selbst verweist:
<ul>
<!--#if expr="${REQUEST_URI} = ///" -->
<li><strong title="Hier befinden Sie sich gerade.">Startseite</strong></li>
<!--#else -->
<li><a href="/">Startseite</a></li>
<!--#endif -->
<!--#if expr="${REQUEST_URI} = /foo/" -->
<li><strong title="Hier befinden Sie sich gerade.">Foo</strong></li>
<!--#else -->
<li><a href="foo">Foo</a></li>
<!--#endif -->
<!--#if expr="${REQUEST_URI} = /bar/" -->
<li><strong title="Hier befinden Sie sich gerade.">Bar</strong></li>
<!--#else -->
<li><a href="bar">Bar</a></li>
<!--#endif -->
</ul>
Nun bin ich auf Probleme gestoßen. Ich gebe zum Vergleich auf jeder Seite den Inhalt von var="REQUEST_URI" aus:
<p>Ausgabe: <!--#echo var="REQUEST_URI" --></p>
Befinde ich mich auf foo, wird
/foo
ausgegeben. Müsste ich dann nicht auch nach
<!--#if expr="${REQUEST_URI} = //foo/" -->
^^^^
abfragen? Funktionieren tut dies, obwohl ich damit gerechnet hätte, das / vor foo dann irgendwie escapen zu müssen.
Befinde ich mich im Rootverzeichnis, erhalte ich als Ergebnis der Abfrage
/
. Daher bin ich wie o.a. vorgegangen und vergleiche expr="${REQUEST_URI} mit ///. Dies funktioniert jedoch nicht. Alle möglichen anderen Varianten (z.B. mein dilettantischer Versuch ins Blaue hinein, mit /// zu vergleichen) führten ebenfalls nicht zum Erfolg. Wie funktioniert's richtig?
Ich hoffe, ich habe mein Problem ausreichend verständnis dargestellt.
Gruß,
MI
Hallo,
basierend auf http://forum.de.selfhtml.org/archiv/2002/9/t23427/ versuche ich, eine Navigation so zu bauen, dass kein Dokument auf sich selbst verweist:
<ul>
<!--#if expr="${REQUEST_URI} = ///" -->
<li><strong title="Hier befinden Sie sich gerade.">Startseite</strong></li>
<!--#else -->
<li><a href="/">Startseite</a></li>
Warum vergleichst du nicht z.B.?
<!--#if expr="${REQUEST_URI} = /${DOCUMENT_URI}/" -->
<!--#if expr="${REQUEST_URI} = //foo/" -->
^^^^
abfragen? Funktionieren tut dies, obwohl ich damit gerechnet hätte, das / vor foo dann irgendwie escapen zu müssen.
Durch /xxx/ wird irgendein Vorkommen von xxx an irgendeiner Stelle gesucht.
Wenn du also im foo bist und /foo ausgegeben wird trifft sowohl /foo" als auch //foo/ zu.
Grüße
Thomas
Hallo,
basierend auf http://forum.de.selfhtml.org/archiv/2002/9/t23427/ versuche ich, eine Navigation so zu bauen, dass kein Dokument auf sich selbst verweist:
<ul>
<!--#if expr="${REQUEST_URI} = ///" -->
<li><strong title="Hier befinden Sie sich gerade.">Startseite</strong></li>
<!--#else -->
<li><a href="/">Startseite</a></li>Warum vergleichst du nicht z.B.?
<!--#if expr="${REQUEST_URI} = /${DOCUMENT_URI}/" -->
Hm ... wie käme ich damit weiter?
Aber du hast mich auf eine Idee gebracht. Folgendes funktioniert:
<ul>
<!--#if expr="${DOCUMENT_URI} = //index.shtml/" -->
<li><strong title="Hier befinden Sie sich gerade.">Startseite</strong></li>
<!--#else -->
<li><a href="/">Startseite</a></li>
<!--#endif -->
<!--#if expr="${DOCUMENT_URI} = //foo/" -->
<li><strong title="Hier befinden Sie sich gerade.">Foo</strong></li>
<!--#else -->
<li><a href="foo">Foo</a></li>
<!--#endif -->
<!--#if expr="${DOCUMENT_URI} = //bar/" -->
<li><strong title="Hier befinden Sie sich gerade.">Bar</strong></li>
<!--#else -->
<li><a href="bar">Bar</a></li>
<!--#endif -->
</ul>
Durch /xxx/ wird irgendein Vorkommen von xxx an irgendeiner Stelle gesucht.
Wenn du also im foo bist und /foo ausgegeben wird trifft sowohl /foo" als auch //foo/ zu.
Nach dem ersten / startet der Ausdruck und vor dem zweiten / endet er. Wen der Ausdruck selbst wiederum ein / enthält, hätte ich eigentlich mit Schwierigkeiten gerechnet.
Gruß,
MI
Hallo,
basierend auf http://forum.de.selfhtml.org/archiv/2002/9/t23427/ versuche ich, eine Navigation so zu bauen, dass kein Dokument auf sich selbst verweist:
Warum vergleichst du nicht z.B.?
<!--#if expr="${REQUEST_URI} = /${DOCUMENT_URI}/" -->Hm ... wie käme ich damit weiter?
Ich dachte, du wollst auschlißen, dass ein Dokument auf sich selber werweist.
Das wäre eine Möglichkeit, wenn:
Aber du hast mich auf eine Idee gebracht. Folgendes funktioniert:
<ul>
<!--#if expr="${DOCUMENT_URI} = //index.shtml/" -->
<li><strong title="Hier befinden Sie sich gerade.">Startseite</strong></li>
<!--#else -->
du keinen eigenen Texte pro Dukument ausgeben ausgeben würdest. (Ich, wenn's auch anderes geht gegen hardkodierte Werte ;-) Deshalb hätte ich auch eher die andere Variante gewählt.)
<!--#if expr="${DOCUMENT_URI} = //foo/" -->
<li><strong title="Hier befinden Sie sich gerade.">Foo</strong></li>
<!--#else -->
<li><a href="foo">Foo</a></li>
<!--#endif -->
<!--#if expr="${DOCUMENT_URI} = //bar/" -->
Du kannst das auch so abkürzen:
<!--#if expr="" -->
<!--#elif expr="" -->
<!--#elif expr="" -->
<!--#else -->
<!--#endif -->
Das mit dem Escaping gige so:
<!--#if expr=""$DOCUMENT_URI" = "/foo/file.html"" -->
in foo
<!--#elif expr=""$DOCUMENT_URI" = "/bar/file.html"" -->
in bar
<!--#else -->
wo anders
<!--#endif -->
"in foo" wird ausgegeben wenn die DOCUMENT_URI "/foo/file.html" ist und "in bar" wenn die DOCUMENT_URI "/bar/file.html" ist.
Grüße
Thomas