(ZUR INFO) SSI: #if #else #endif bei web.de

- webserver
<p><!--#echo var="SERVER_SOFTWARE"-->:
<!--#if expr="1=1"-->true<!--#else-->false<!--#endif--></p>
sollte eigentlich sowas wie "Apache: true" ausgeben;
<p><!--#echo var="SERVER_SOFTWARE"-->:
<!--#if expr="1=2"-->true<!--#else-->false<!--#endif--></p>
hingegen "Apache: false".
Funktioniert auch auf einer bei bei all-inkl.com gehosteten Seite.
Nicht jedoch auf einer bei bei web.de gehosteten:
Erstes ergibt:
<p>Apache/1.3.34 Ben-SSL/1.55:
true[an error occurred while processing this directive]
Zweites lediglich:
<p>Apache/1.3.34 Ben-SSL/1.55:
'<!--#echo var="SERVER_SOFTWARE"-->
' und '<!--#if expr="foo"-->
' versteht der Server; '<!--#else-->
' und '<!--#endif-->
' jedoch nicht.
Da frage ich mich: Bin ich zu blöd oder der Server von web.de?
Des Rätsels Lösung: Es muus dort '<!--#else -->
' und '<!--#endif -->
' heißen – mit Leerzeichen. (Bei den anderen beiden Direktiven sind keine Leerzeichen vor '-->' erforderlich.)
„Aber wem erzähle ich das? Dem wissend zwinkernden? Wahrscheinlich doch nur dem Archiv.“ [at]
Die oben gestellte Frage möge jeder für sich beantworten.
Live long and prosper,
Gunnar
Hi,
Des Rätsels Lösung: Es muus dort '
<!--#else -->
' und '<!--#endif -->
' heißen – mit Leerzeichen. (Bei den anderen beiden Direktiven sind keine Leerzeichen vor '-->' erforderlich.)
Zitat aus http://httpd.apache.org/docs/1.3/mod/mod_include.html(leider ohne passenden Anker bei "Basic Elements") bzw. http://httpd.apache.org/docs/2.0/mod/mod_include.html#elements bzw. http://httpd.apache.org/docs/2.2/mod/mod_include.html#elements
Note that the comment terminator (-->) should be preceded by whitespace to ensure that it isn't considered part of an SSI token.
Also ein klassischer RTFM-Fall.
cu,
Andreas
@@MudGuard:
Also ein klassischer RTFM-Fall.
Naja, dass sich zwei verschiedene Server unterschiedlich verhalten bzw. sich ein und derselbe Server bei verschiedenen Direktiven unterschiedlich verhält, ist schon – ähm – verwirrend.
Vermutlich erwartet der Server von web.de nicht unbedingt ein Leerzeichen vor '-->' , wohl aber nach dem Element der Direktive. Mit '#if ' ist er also zufrieden, deshalb muss nach dem Attribut 'expr="foo"' keins mehr stehen.
Ich liebe solche „should ... unless ...“.
Live long and prosper,
Gunnar