Puncte:4

folosiți „rewrite” și „try_files” împreună [Nginx]

drapel cn

Am eliminat sufixul „.php” de la sfârșitul fișierelor PHP de pe serverul Nginx cu următorul cod, dar de data aceasta nu pot trimite niște date către server.

try_files $uri/ $uri.html $uri.php$is_args$query_string;

Unele link-uri de pe site sunt trimise cu Ajax, iar extensia „.php” nu este disponibilă la sfârșitul acestor link-uri. De exemplu; https://panel.example.com/app/controller/ajax/collect

De exemplu, când vreau să accesez fișierul „/collect” pe care vreau să îl accesez prin Ajax sau direct, primesc eroarea „Fișier nu a fost găsit”. Pentru că „rescriu” cu codul de mai jos și ofer un URL curat.

rescrie ^/([^/]+)/([^/]+)?$ /index.php?cmd=$1&scd=$2 ultimul;
rescrie ^/([^/]+)/?$ /index.php?cmd=$1 ultimul;

Exemplu de link: https://panel.example.com/[detalii|cat|profil]/[subPages(ID produs, nume utilizator..)]

Drept urmare, codurile de mai sus sunt corecte și funcționează, dar nu funcționează în același timp împreună. Cum pot rula aceste două coduri în același timp?

Fișierul complet Nginx vHost

Puncte:4
drapel us

Ai putea încerca următoarea abordare:

locație ~ ^/(?<cmd>[^/]+)/(?<scd>[^/]+) {
    try_files /index.php?cmd=$cmd&scd=$scd =404;
}

locație ~ ^/(?<cmd>[^/]+)/ {
    try_files /index.php?cmd=$cmd =404;
}

Locație / {
    try_files $uri/ $uri.html $uri.php$is_args$args;
}

Folosim aici algoritmul de potrivire a locației nginx pentru a verifica mai întâi potrivirea URL-ului cu expresiile regulate și apoi luăm măsurile adecvate pentru acea adresă URL.

Folosesc capturi cu nume aici ?<cmd> pentru a clarifica numele variabilelor.

De asemenea ?$ partea de la sfârșitul expresiei regulate este eliminată, deoarece nu are nicio diferență. Ambii ?$ și gol potrivește orice șir.

Emre6 avatar
drapel cn
Vă mulţumesc pentru ajutor. Din păcate am primit o eroare 404, dar dacă merg la această adresă, nu primesc nicio eroare; `https://panel.example.com/index?cmd=login` - [Pentru a nu vă induce în eroare, conf. Partajez conținutul](https://pastebin.com/Uk4X8dqt)
djdomi avatar
drapel za
nu lipiți configurația, nu utilizați un serviciu de nopaste

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.