Nginx-Weiterleitung für bestimmte URL

Nginx-Weiterleitung für bestimmte URL

Für den Serverblock unserer Site in Nginx habe ich diese Standortanweisungen:

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

Ich habe eine bestimmte URL aus unserer alten Forum-Software, die ich umleiten möchte. Die URL sieht folgendermaßen aus:

https://www.example.com/forums/forumdisplay.php?f=105

Bisher scheint nichts von dem, was ich versucht habe, mit dieser URL übereinzustimmen. Ich habe ein paar verschiedene Umschreibanweisungen im /-Speicherort ausprobiert und auch eine exakte Übereinstimmung versucht, weil ich dachte, dass die längste Übereinstimmung gewinnen sollte:

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

Das funktioniert nicht. Ich erhalte von dieser URL immer noch eine 404-Fehlermeldung. Wo/wie soll ich diese Weiterleitung durchführen?

Antwort1

Ein Ansatz besteht darin, Folgendes zu verwenden:

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

Dieser Ansatz stimmt mit der /forums/forumdisplay.phpURL überein, bei der das fAbfrageargument auf 105 gesetzt ist und es zusätzliche Abfrageargumente geben kann.

Das Beispiel im Kommentar erfordert eine genaue Übereinstimmung mit der vollständigen URL und funktioniert nicht, wenn die URL zufällig

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

verwandte Informationen