2017-11-14 3 views
0

Ich versuche, Links, die auf eine alte Anwendung zeigen, auf eine neue umzuleiten. Die neue Anwendung kann keine direkten Links verarbeiten. Daher möchte ich sie auf eine Suche verweisen, aber diese Suche muss in Anführungszeichen gesetzt werden, damit sie ordnungsgemäß funktioniert. Ich habe die folgende Konfiguration versucht, aber 400 Bad Request, wenn ich tun:HAProxy reqrep mit Text nach der letzten Rückreferenz

reqrep ^([^\ :]*)\ /\?pdf=(.*) \1\ /newpdf?search=%22\2%22 

Die nächstgelegene ich gekommen bin, ist alles nach dem letzten Rückreferenzierung zu entfernen, wie folgt aus:

reqrep ^([^\ :]*)\ /\?pdf=(.*) \1\ /newpdf?search=%22\2 

Ist es nicht möglich, etwas nach der letzten Rückreferenz zu setzen?

Antwort

1

Das Problem ist nicht Text nach der Rückreferenz. Sie sind mit Blick auf die Natur der Zeichenfolge Sie manipating:

GET /page?pdf=foo HTTP/1.1 <<< here 

Nach dem URI ein Raum ist und die HTTP-Version. Sie erfassen das innerhalb \2. Trennen Sie es in \3 und fangen Sie ein Leerzeichen und ein oder mehrere Leerzeichen ein, die am Ende verankert sind.

reqrep ^([^\ :]*)\ /\?pdf=(.*)(\ [^\ ]+)$ \1\ /newpdf?search=%22\2%22\3 

Eine bessere Lösung wäre Fetches zu verwenden und die http-request Anfrage Modifikationsfunktionen, um die Query-String zu manipulieren.

Verwandte Themen