nginx-Weiterleitung /2013/04/test.html nach /test – funktioniert nicht

nginx-Weiterleitung /2013/04/test.html nach /test – funktioniert nicht

Ich bin deswegen völlig durchgedreht. Wie kann ich eine bestimmte URL /2013/04/test.htmlin /testNginx umleiten?

Ich habe dies versucht: aber es funktioniert nicht:

server {
     location /2013/05/test.html {
         return 301 http://$server_name/test;
     }
}

Ich habe einige Tests durchgeführt – aus irgendeinem Grund wird jede URL ohne die Erweiterung .html im Standortteil der Konfigurationszeile richtig umgeleitet, aber sobald ich .html in den Standort einfüge, bumm, funktioniert es nicht mehr.

Irgendeine Idee, warum das so ist? Danke!

Antwort1

Anstatt für jede Weiterleitung einen Standortblock zu haben, können Sie jederzeit einfach Umschreibregeln in einen vorhandenen Standortblock einfügen:

rewrite /2013/05/test.html http://$server_name/test permanent;
rewrite /2013/05/test2.html http://$server_name/test2 permanent;

Sie können auch verschiedene reguläre Ausdrücke verwenden, sodass Sie nicht bei jedem Hinzufügen eines neuen „Permalinks“ einen neuen hinzufügen müssen.

Antwort2

Ich stimme mit Jason Ilicic überein, mit einemRegel umschreibenwäre wahrscheinlich effizienter.

Wenn Sie wirklich dieStandortblock, haben Sie versucht, den Modifikator "=" zu verwenden? Wenn Sie mehrere Standorte haben, wählt die Auswahllogik von Nginx möglicherweise einen anderen Standort aus als erwartet.

Aus der Nginx-Dokumentation

using the “=” modifier it is possible to define an exact match of URI and location

also zum Beispiel

server {
    location = /2013/05/test.html {
        return 301 http://$server_name/test;
    }
}

verwandte Informationen