nginx: Wie schreibe ich eine Anfrage mit einem benutzerdefinierten Statuscode um? (200 statt 301)

nginx: Wie schreibe ich eine Anfrage mit einem benutzerdefinierten Statuscode um? (200 statt 301)

Aus SEO-Gründen wurde ich gebeten, Weiterleitungen einzurichten. Eine Weiterleitung mit einem 30x-Statuscode ist kein Problem und funktioniert:

        location ^/home$ {
              return 301 /foo/bar/index.html;
        };

Aber es scheint, dass 301-Weiterleitungen nicht ausreichen, um die Seite zu crawlen. Also habe ich es mit etwas wie diesem versucht:

        location ^/home$ {
              return 200 /foo/bar/index.html;
        }

Als Antwort erhält man jedoch nur die Zeichenfolge „/foo/bar/index.html“. Gibt es eine Möglichkeit, eine Anfrage mit einem Statuscode 200 umzuleiten?

Antwort1

Es gibt wahrscheinlich keine Lösung, um nginx für diese Antwort zu konfigurieren. HTTP funktioniert so einfach nicht. In unserem Fall haben wir die URIs innerhalb der Anwendung abgebildet und vermieden, nginx zum Umschreiben der URIs zu verwenden

Antwort2

location ^/home$ {
    rewrite ^/home$ /foo/bar/index.html last;
    return 200;
}

Die Direktive „rewrite“ wird verwendet, um die angeforderte URL von „/home“ in „/foo/bar/index.html“ zu ändern. Der Parameter „last“ weist nginx an, die Verarbeitung des aktuellen Satzes von Standortdirektiven zu beenden und mit der neu geschriebenen URL fortzufahren. Anschließend wird die Direktive „return“ verwendet, um den Statuscode auf 200 zu setzen.

verwandte Informationen