Puncte:0

cum redirecționez o locație către alta, dar fără a-i schimba adresa URL în Nginx

drapel co

Lucrez la un site web pentru a afișa diferite produse, utilizatorii pot accesa diferite pagini de produse prin adrese URL precum „domeniul meu.com/product/1.html”, „domeniul meu.com/produs/2.html”

dar nu vreau să prezint direct acele fișiere html statice, în schimb există un script php care va fi încărcat mai întâi la mydomain.com/product.php

așa că vreau să redirecționez „mydomain.com/product/1.html” la „mydomain.com/product.php”, dar nu îi schimb adresa URL inițială

Am încercat alias, try_files, return, dar toate rescriu adresa URL în „mydomain.com/product.php”

Sunt nou în Nginx, aceasta este probabil o întrebare foarte simplă, dar am încercat să obțin asta de câteva zile.

Puncte:0
drapel gr

Sunt atât de multe moduri de a face asta...

Cel mai simplu este

rescrie ^/product/ /product.php;

la Server context. URI inițial al solicitării dvs. (de ex. /product/1.html) va fi disponibil pentru produs.php scenariu ca $_SERVER['REQUEST_URI'] valoarea elementului de matrice.

De asemenea, puteți utiliza rescrie directivă la Locație context, aceasta poate fi ușor (foarte putin) mai performant:

locație /produs/ {
    rescrie ^ /product.php ultimul;
}

Dacă doriți, puteți obține codul de produs și îl puteți transmite către dvs produs.php script ca argument de interogare:

rescrie ^/product/(.*)\.html$ /product.php?product=$1;

sau

locație /produs/ {
    rescrie ^/product/(.*)\.html$ /product.php?product=$1 ultimul;
}

În acest fel, codul dvs. de produs (1 pentru /product/1.html URI, 2 pentru /product/2.html URI etc.) vor fi disponibile pentru produs.php scenariu ca $_GET['produs'] valoarea elementului de matrice.

Puteți chiar să definiți un handler FastCGI individual pentru aceasta:

locație /produs/ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/product.php;
    fastcgi_pass <fastcgi_upstream_or_socket>;
}

(URI de solicitare originală va fi disponibil prin $_SERVER['REQUEST_URI']), sau dacă doriți ca codul de produs să fie disponibil prin $_GET['produs']:

locație ~ /produs/(.*)\.html$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/product.php;
    fastcgi_param QUERY_STRING produs=$1;
    fastcgi_pass <fastcgi_upstream_or_socket>;
}

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.