Puncte:2

Nginx redirecționează către alt domeniu fără urmă uri

drapel us

Încerc să obțin http://foo.mydomain.xyz/one/two/three.json sunând http://bar.mydomain.xyz/cat/one/two/three.json. Eu folosesc următoarea configurație:

Server {
        asculta 80;
        asculta [::]:80;
        server_name bar.mydomain.xyz;
        absolute_redirect off;

        Locație / {
          proxy_pass http://localhost:8080;
        }

        locație /cat {
          rescrie ^(/cat) http://foo.mydomain.xyz$request_uri permanent;
        }
}
Server {
        asculta 80;
        asculta [::]:80;
        nume_server foo.mydomain.xyz;

        Locație / {
          proxy_pass http://localhost:7070;
        }
}

Folosind această configurație când sun: http://bar.mydomain.xyz/cat/ mă redirecționează către http://foo.mydomain.xyz/ cu succes. Dar când sun http://bar.mydomain.xyz/cat/one/two/three.json se intoarce http://foo.mydomain.xyz/cat/one/two/three.json. Observați /pisică nu se elimină din url. Cum pot rezolva asta?

Richard Smith avatar
drapel jp
`$request_uri` este URI-ul original, trebuie să capturați ultima parte a URI-ului în expresia regex `rewrite`. Încercați: `rescrie ^/cat/(.*)$ http://foo.mydomain.xyz/$1 permanent;`
drapel us
@RichardSmith Puteți posta asta ca răspuns. Mulțumiri
Puncte:1
drapel jp

Ta rescrie declarația schimbă numele de domeniu, dar nimic altceva. Valoarea a $request_uri este URI-ul original, inclusiv primul /pisică parte. Trebuie să capturați ultima parte a URI-ului în expresia regulată.

De exemplu:

rescrie ^/cat/(.*)$ http://foo.example.com/$1 permanent;

Sau poate:

rescrie ^/cat(?:/(.*))?$ http://foo.example.com/$1 permanent;
drapel us
în cazul meu, încerc să merg la `https://foo.mydomain.xyz/bar/v1/search?text=mytext&size=25` de la `https://bar.mydomain.xyz/v1/search?text= mytext&size=25`.Când încerc să „rescrie”, redirecționează numai către porțiunea „https://bar.mydomain.xyz/v1/search”. Parametrii nu trec.
Puncte:1
drapel us

O altă abordare este de a captura partea din Locație directivă:

Locație / {
    proxy_pass http://localhost:8080;
}

locație ~ ^/cat(/.+)$ {
    returnează 301 http://foo.example.com$1$is_args$args;
}
drapel us
Acesta returnează „număr nevalid de argumente în directiva „retur” în /etc/nginx/sites-enabled/mydomain.com:19”
drapel us
Scuze, greșeala mea, am lăsat acolo un cuvânt „permanent” în plus.
drapel us
@tero-kilman, în cazul meu, încerc să merg la `https://foo.mydomain.xyz/bar/v1/search?text=mytext&size=25` de la `https://bar.mydomain.xyz/v1 /search?text=mytext&size=25`. Când încerc `return`, redirecționează numai către porțiunea `https://bar.mydomain.xyz/v1/search`. Parametrii nu trec.
drapel us
Am adăugat argumentele redirecționării în răspunsul meu.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.