2013-02-14 8 views
5

Einige der Ausdrücke in Server Side Includes nicht mehr arbeiten, nachdem ich den Server von Version 2.2 bis 2.4 aktualisiert haben, mir eine Reihe von Fehlern geben:Wie funktioniert Ausdruck in Apache 2.4?

AH01337: Könnte nicht analysieren ausdr „$ SERVER_NAME = abc“ in /var/www/err/ft.html.var: Parse Fehler in der Nähe von $
AH01337: konnte nicht Ausdruck "! $ REDIRECT_STATUS" in /var/www/err/tp.html: Parse Fehler in der Nähe '$'
AH01337: Könnte nicht analysieren ausdr "$ HTTP_HOST = /^([az]{2}\.)abc\.com/ & & $ SERVER_NAME = abc \ .com" in/var/www/err /tp.html: Parse Fehler in der Nähe von ‚$‘

Ich verstehe, dass dies zu einem gewissen ongoing effort nur aufgrund ist eine einzige Variante zu verwenden, genannt ap_expr, für alle Konfigurationsanweisungen. Doch nach der Dokumentation zu lesen, ich habe immer noch keine Ahnung, wie einige meiner alten Code konvertieren diese Änderung widerzuspiegeln:

<!--#if expr="! $REDIRECT_STATUS" --> 
<!--#set var="REDIRECT_STATUS" value="404" --> 
<!--#endif --> 
<!--#if expr="$HTTP_HOST = /^([a-z]{2}\.)abc\.com/ && $SERVER_NAME = abc\.com" --> 
<!--#set var="subdomain" value="$1" --> 
<!--#else --> 
<!--#set var="subdomain" value="" --> 
<!--#endif --> 

würde schätzen, wenn jemand darauf hinweisen kann, wie die oben geändert würde mir loszulegen. Vielen Dank!

+0

Haben Sie einen Blick auf diese http://httpd.apache.org/docs/2.4/mod/mod_include.html#ssilegacyexprparser scheint, dass Sie diese auf müssen alte Syntax verwenden. – 244an

+0

@ 244an, ja, das habe ich gesehen. Ich möchte nur die neue Syntax lernen, falls diese Option in der Zukunft veraltet sein sollte. –

Antwort

1

WARNUNG

Ich habe versucht Richtlinie zu aktivieren:

SSILegacyExprParser auf

(wie oben in Kommentar erwähnt)

ABER, dass auch meine SSIStartTag configs getötet ..

nicht mehr schön {{echo var = ‚var1‘}}

dass XHTML-Editoren Vorsicht wird CHOKE wenn die alte Kommentarsyntax innerhalb Attribute erscheinen> :-(

0

ich erwarten würde, dass, wenn Sie Interesse an die neue Syntax, werden Sie mit etwas am Ende wie folgt:

<!--#if expr="-z %{REDIRECT_STATUS}" --> 
<!--#set var="REDIRECT_STATUS" value="404" --> 
<!--#endif --> 
<!--#if expr="v('HTTP_HOST') =~ /^([a-z]{2}[.])abc[.]com/ 
      && v('SERVER_NAME') == 'abc.com'" --> 
<!--#set var="subdomain" value="$1" --> 
<!--#else --> 
<!--#set var="subdomain" value="" --> 
<!--#endif --> 

ich über die $ 1 ist nicht sicher bin, da ich nicht eine solche Verwendung in hatte, was ich letzte Nacht nur umgewandelt (ein paar Leute denke, es kann nur innerhalb der gleichen Ausdruck verwendet werden, in dem es erfasst wird). Ich habe einige Probleme mit den regulären Ausdrücken gefunden, die NICHT wie erwartet funktionieren, zum Beispiel einen Ausdruck wie diesen, um zu bestimmen, ob ich mir ansehe, wie viel das aktuelle Verzeichnis oder ein Unterdokument ausmacht. Die letzte Zeile entspricht einem URI, der auf "/" endet, aber ich habe ein paar Stunden verloren, weil ich festgestellt habe, dass% {REQUEST_URI} NICHT funktioniert, nur das Formular v ('REQUEST_URI') (irgendwie erwarte ich das Gegenteil) für etwas).

<!--#if expr="((v('REQUEST_URI') =~ m_/index.shtml_) 
      || (v('REQUEST_URI') =~ m_/index.html_) 
      || (v('REQUEST_URI') =~ m_/index.cgi_) 
      || (v('REQUEST_URI') =~ m_/$_))" --> 
Verwandte Themen