RewriteRule - Umgebungsvariable an CGI durchreichen

GwenDragon

Registered User
Ich schildere mal das Vorhaben: Über RewriteCond bestimmte Abfragen auf z.B. REMOTE_ADDR machen, dies als Umgebunsvariable durch reichen an ein CGI.

Im .htaccess:
Code:
RequestHeader set X-BLOCKED " "

RewriteCond expr "-R '34.1.208.0/20'"        [OR]
RewriteCond expr "-R '34.35.0.0/16'"        [OR]
RewriteCond expr "-R '34.152.86.0/23'"        [OR]
# usw.
RewriteCond expr "-R '34.177.50.0/23'"  
RewriteRule ^.+ /cgi-bin/block.pl [E=X-BLOCKED:%{REMOTE_ADDR},L]

HTTP_X_BLOCKED wird zwar im Hash %ENV erzeugt, aber nicht gefüllt.

[E=HTTP_X_BLOCKED:%{REMOTE_ADDR},L] hilft auch nicht weiter.

Wo ist mein Denkfehler?
 
Last edited:
Ich bin zwar jetzt nicht der Profi, was Rewrites angeht, aber IMHO sollte die Syntax korrekt sein, um Umgebungsvariablen für das CGI Skript zu setzen. Aber ich glaube, der Name der Variable sollte X_BLOCKED sein, nicht HTTP_X_BLOCKED oder X-BLOCKED (und natürlich prüfen, ob das CGI Skript die richtige Variable ausliest).
 
Am Programmcode des Perl- oder PHP liegt es nicht.

Ich habe mal es so gesetzt:
Code:
RequestHeader set WHYBLOCKED " "

RewriteCond expr "-R '34.1.208.0/20'"        [OR]
RewriteCond expr "-R '34.35.0.0/16'"        [OR]
RewriteCond expr "-R '34.152.86.0/23'"        [OR]
# usw.
RewriteCond expr "-R '34.177.50.0/23'"
RewriteRule ^.+ /cgi-bin/block.pl [E=WHYBLOCKED:%{REMOTE_ADDR},L]

Die Umgebungsvariable gibt es dann als HTTP_WHYBLOCKED im Skript. Aber ohne Wert.
Also wird es durch das Rewrite-Flag E=WHYBLOCKED:%{REMOTE_ADDR} nicht gesetzt.

PS: Ist in PHP genauso. Muss also irgendwie am Rewrite liegen. ☹️
 
ich vermute, das Problem aktuell hier zu finden:
Code:
RequestHeader set WHYBLOCKED " "
Damit setzt du ja einen Header und keine Variable.
Was passiert, wenn du diese Zeile entfernst?
 
Seltsam, das hier klappt!
Apache config:
RequestHeader set WHYBLOCKED "expr=IP %{REMOTE_ADDR}"
RewriteRule .* - [E=WHYBLOCKED:%{WHYBLOCKED}]

Warum RequestHeader als Zwischenspeicher nötig ist? Und warum ich %{REMOTE_ADDR} nicht im Rewrite-Flag setzen kann? :unsure:
 
Last edited:
Ich wollte nur sagen, dass ich es selbst lösen konnte.
Na, so ging es:
Apache config:
RequestHeader set WHYBLOCKED "expr=IP %{REMOTE_ADDR}"
RewriteRule .* - [E=WHYBLOCKED:%{WHYBLOCKED}]
RewriteCond expr "-R '34.1.208.0/20'"        [OR]
RewriteCond expr "-R '34.35.0.0/16'"        [OR]
RewriteCond expr "-R '34.152.86.0/23'"        [OR]
RewriteCond expr "-R '34.177.50.0/23'"        [OR]
…
RewriteCond expr "-R '34.128.62.0/23'"       

RewriteRule ^.*     /cgi-bin/block.pl        [L]
 
Back
Top