Ich versuche, eine bedingte Anweisung mit der If-Direktive von Apache in meine .htaccess-Datei aufzunehmen.
Ich habe auf diese Seite http://httpd.apache.org/docs/trunk/mod/core.html#if verwiesen, aber es werden nicht viele Beispiele aufgeführt. Zwei unvollständige Beispiele sind:
<Wenn% {REQUEST_METHOD} IN GET, HEAD, OPTIONS>
und
<If "$ req {Host} = ''">
Daher habe ich versucht, Folgendes zu meiner .htaccess-Datei hinzuzufügen:
<If% {SERVER_PORT} IN GET, HEAD, OPTIONS> Hier ist noch nichts </ If>
Aber ich erhalte immer wieder den Fehler 500, wenn ich versuche, die Seite zu laden. Dies ist auf meiner lokalen Installation und es hat zuvor einwandfrei funktioniert (oder wenn ich diesen Code entferne). Ich glaube, ich habe AllowOverride All
global eingerichtet, und der Kontext für die If-Direktive sollte in .htaccess vorhanden sein ("Kontext: Serverkonfiguration, virtueller Host, Verzeichnis, .htaccess").
Kann mir jemand einige Beispiele geben, wie man die <If> -Direktive richtig verwendet, oder eine Anleitung, warum sie bei mir nicht funktioniert?
Vielen Dank!
SERVER_PORT
inGET,HEAD,OPTIONS
keinen Sinn (SERVER_PORT
wird die Nummer Portnummer sein, auf der die Anfrage empfangen wurde).Antworten:
Die
<If>
Direktive ist nur in Apache 2.4+ und nicht in 2.2 oder früher verfügbar.http://httpd.apache.org/docs/2.4/mod/core.html#if
Dokumentation in 2.2 nicht vorhanden:
http://httpd.apache.org/docs/2.2/mod/core.html#if
quelle
<If>
ist nur in Apache 2.4+ verfügbar, stellen Sie also zunächst sicher, dass Sie diese Version haben.Beispiele
Alternativen zu
<If>
Es gibt ein paar andere Lösungen für bedingte Anweisungen in Apache 2.2, wenn Sie immer noch daran festhalten.
Sie können Umgebungsvariablen festlegen über:
SetEnvIf
RewriteMatch
Dann können Sie mit bedingte Anweisungen ausführen
Beispiel:
quelle
<IfDefine>
Anweisung nur beim Start analysiert, und die Anweisung kann nurparameter-name
mithttpd -Dx=y