If- Statements in SSI
Bertram
- html
Hallo zusammen,
in einem früheren thread (im Archiv) habe ich gelernt, dass Microsoft-IIS das IF-Statement in Server Side Includes nicht unterstützt.
Ich hatte damals das Problem, dass das Statement auf einem Server lief, auf dem anderen nicht.
Vom Provider erhalte ich leider keine Information über die eingesetzte Software, also weiß ich nicht, ob es an IIS liegt.
Inzwischen habe ich aber festgestellt, dass nicht alle IF-Statement abgelehnt werden, was gegen IIS spricht.
Oder akzeptiert IIS manche IF-Statements und andere nicht?
Es wäre nett, wenn jemand, der mit IIS arbeitet, das folgende HTML einmal testen könnte.
Die IF-Statements liefern auf dem einen Server wie erwartet:
TEST1: ssitest
TEST2: OK
auf dem andern Server
[an error occurred while processing this directive] TEST1: (none)
TEST2: OK
d.h. dort wird das erste if abgelehnt und das zweite akzeptiert.
Hier die HTML-Datei:
<html>
<head>
<title>SSI-Test</title>
<body>
<!--#if expr="$DOCUMENT_NAME=/^(.*)\.shtml$/" --><!--#set var="TEST1" value="$1" --><!--#endif -->
TEST1: <!--#echo var="TEST1" -->
<br>
<!--#if expr="$DOCUMENT_NAME=/^.*\.shtml$/" --><!--#set var="TEST2" value="OK" --><!--#endif -->
TEST2: <!--#echo var="TEST2" -->
</body>
</html>
Ich danke für Eure Hilfe
Hi,
<!--#if expr="$DOCUMENT_NAME=/^(.*).shtml$/" --><!--#set var="TEST1" value="$1" --><!--#endif -->
<!--#if expr="$DOCUMENT_NAME=/^.*.shtml$/" --><!--#set var="TEST2" value="OK" --><!--#endif -->
Der entscheidende Unterschied ist also das capturing.
Apache 2.0 und 2.2 erwähnen in der Doku (http://httpd.apache.org/docs/2.0/mod/mod_include.html#flowctrl)
"If you are matching positive (=), you can capture grouped parts of the regular expression. The captured parts are stored in the special variables $1 .. $9."
1.3 erwähnt das nicht (Link ist fast identisch, einfach das 2.0 in der Mitte durch 1.3 (bzw. 2.2) ersetzen)
Daraus ist zunächst zu schließen, daß das Capturing erst ab Version 2.0 des Apache funktioniert.
Und im zweiten Schritt kann man daraus schließen, daß der eine Server ein Apache 1.3 und der andere ein 2.x ist.
cu,
Andreas
Hallo Andreas,
ich bedanke mich für die Auskunft.
In der Tat arbeitet der eine Provider mit dem Apache 1.3 und der andere schon mit der Version 2.
Schön wärs, wenn bei den Providern solche Spezialisten säßen wie hier im Forum!
Gruß
Bertram