So entfernen Sie ein Unterverzeichnis aus der url, die vor der übergabe an ein Skript?

Dieser aufgefordert wurde, auf SO vor aber die Antworten haben nicht verallgemeinert worden. So, hier geht.

Habe ich zwei verschiedene web-apps. Sie wurden gemacht, um auf verschiedenen Servern an der Wurzel. Aber jetzt Sie gehen, um platziert werden, in Unterverzeichnissen auf dem gleichen server. Das Skript unten ist senden Sie das Unterverzeichnis zusammen mit den URI ' s zu den Skripten. Das ist ein problem.

alten urls:

neue urls:

Den store-Website zu sehen ist /store/items/1 wenn es will, nur um zu sehen /items/1. Das gleiche gilt für die backoffice-Website.

Mein Versuch:

    location /store {
            try_files @store_site;
    }

    location /backoffice {
            try_files @backoffice_site;
    }

    location @store_site {
            include uwsgi_params;
            uwsgi_pass unix:/var/run/uwsgi/store_site.sock;
            proxy_set_header Host $host;
    }

    location @backoffice_site {
            include uwsgi_params;
            uwsgi_pass unix:/var/run/uwsgi/backoffice_site.sock;
            proxy_set_header Host $host;
    }

Wieder, die Shop-Website ist immer URLs mit der /store Präfix-und backoffice ist immer /backoffice. Diese Seiten wurden so codiert, dass Sie nicht erwarten, dass diese Präfixe. Ich muss entfernen Sie die /store und /backoffice Präfix vor dem senden der eigentlichen Website.

Ist dies eine rewrite-Regel, was?

Habe ich versucht, dieses basiert auf dieses ALSO Seite und es hat nicht funktioniert. Ich muss nicht verstehen, etwas über die syntax.

location /store {
        rewrite  ^/store/(.*) /$1;
        try_files $uri @store_site;
}

Update

Anscheinend funktioniert dies (Hinzugefügt break;) Ist dies eine komplette Lösung?

location /store {
        rewrite  ^/store/(.*) /$1 break;
        try_files $uri @store_site;
}
  • Mehr oder weniger eine komplette Lösung. Hängt von details Ihrer Website.
InformationsquelleAutor 010110110101 | 2017-01-12
Schreibe einen Kommentar