Puncte:1

Nginx get / from /index.php fără „indexul directorului este interzis” în altă parte

drapel us

am nevoie / să fie arătat ca /index.php.

Chiar acum am

index index.php;
if ( $request_uri = /index.php ) { return 301 /; }
locație / { try_files $uri $uri/ =404; }

Și totul funcționează bine, dar există câteva erori precum

indexul directorului „/home/.../public_html/tmp/” este interzis

pe care vreau să-l elimin. Problema aici este $uri/ în try_files $uri $uri/ =404;

https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden/38046124#38046124

Ubuntu + Nginx: indexul directorului „/var/www/app/my-app/” este interzis

Dar dacă schimb asta în try_files $uri =404; sau try_files $uri /index.html index.php =404; apoi „/” nu mai funcționează și arată 404

De ce eliminarea $uri/ împiedică afișarea index.php dacă am index index.php;?

Cum pot seta asta / ar trebui să verifice index.php și dacă nu există index.php, atunci arată doar 404 fără a arunca eroarea „este interzis”?

Richard Smith avatar
drapel jp
Site-ul dvs. are mai mult de un fișier `index.php`?
drapel us
Poate sunt mai multe, dar îmi pasă doar de root `/index.php`. Totul funcționează acum, dar cu `indexul directorului „...” este interzis` când cineva accesează pagina care nu este aici din cauza `$uri/`.
Puncte:2
drapel jp

The $uri/ termen în a try_files declarația are două scopuri distincte.

Dacă URI-ul nu se termină cu a /, dar face referire la un director, Nginx va genera o redirecționare 301 pentru a adăuga a /.

Dacă URI-ul se termină cu a / și face referire la un director, va fi invocată funcționalitatea index, care poate duce fie la o redirecționare internă către un fișier index, fie la un răspuns 403 dacă fișierul index nu este găsit.

O soluție pentru a suprima răspunsul 403 fără a afecta prea multe alte lucruri este de a gestiona URI-uri care se termină cu un / diferit.

De exemplu:

locație ~ /$ { 
    if (-f ${request_filename}index.php) {
        rescrie ^(.*)/$ $1/index.php ultima;
    }
    întoarce 404;
}

Cele de mai sus vor testa existența index.php în director și returnează 404 dacă nu există.

Puncte:0
drapel us

Următoarea abordare ar putea funcționa:

locație = /index.php {
    retur 301 /;
}

Locație / {
    try_files $uri $uri/ /index.php =404;
}

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.