Am 29.11.2020 um 02:16 schrieb Daniel Leidert:

Hallo Daniel

> Du nutzt mit '=~' doch eine Regex-Abfrage. Da kannst du auch alle Schlüssel in
> den Regex-Ausdruck schreiben, ohne jeweils einen neuen Abschnitt schreiben zu
> müssen. Du kannst deinen Abschnitt sogar kürzen. Schau dir mal das 3. Beispiel
> unter https://httpd.apache.org/docs/2.4/de/expr.html und
> https://httpd.apache.org/docs/2.4/howto/access.html#env an.
> 
> Alternativ könnte man die file() Funktion vielleicht so nutzen (ungetestet):
> 
> <If "%{QUERY_STRING} =~ /key=(\d+)/">
>    Require expr file('keys.txt') =~ $0
> </If>

Ich habe so probiert. Leider geht es nicht... Apache spuckt den Fehler:

Cannot parse expression in require line: syntax error, unexpected
T_REGEX_BACKREF, expecting T_REGEX or T_REGEX_I

Hast du eine Idee, wie man das umschreiben kann?

> Ich muss dazu sagen, ich weiß nicht, ob Apache hier die längste oder die
> kürzeste Übereinstimmung ausgibt. Bestimmte Regexe unterstützen die Notation
> mit einem Fragezeichen am Ende '(\d+?)', um die längste Übereinstimmung

Das wäre gar kein Problem, denn ich kann problemlos alle API-Key mit
derselben Länge schreiben

> Alternativ kannst du wahrscheinlich auch etwas mit mod_rewrite und RewriteMap
> basteln, wenn du die Schlüssel aus einer Datei auslesen möchtest.

Das wäre auch eine Möglichkeit, allerdings weiß ich nicht genau, wie ich
das machen kann...
Hast du vielleicht ein Tipp, bzw. ein Beispiel?

Danke
Luca Bertoncello
([email protected])

Antwort per Email an