Această întrebare urmează în multe feluri de la a precedentul Întrebam – și am ajuns să îmi răspund. Un scurt rezumat al problemei pe care o descriu acolo și soluția mea la aceasta
- Trebuie să efectuez diferite acțiuni implicite atunci când există o încercare de a accesa fișierele dintr-un subdosar, în funcție de cine încearcă accesul
aa
- O aplicație web „back-office”, caz în care fișierul este livrat dacă există sau un „stub” este generat și ecou înapoi dacă nu există
- Ca răspuns la solicitările de la o aplicație de telefon, OTH, vreau să livrez fișierul, dacă există, sau un HTTP 404 dacă nu există
Soluția pe care am găsit-o este următoarea
- Creați un link simbolic către folderul în cauză
ln -s /cale/la/folder /cale/la/bo_folder
unde prefixul bo_
pe link-ul simbolic înseamnă back-office
- Când preluați fișiere din aplicație, încercați să ajungeți direct la ele ca
/cale/la/folder/file.name.extn
caz în care Nginx se va ocupa de trimiterea înapoi a unui 404 sau a fișierului, după cum consideră corect
- Când preluați fișiere pentru editare în suita backoffice, accesați-le ca
/cale/la/bo_folder/file.name.extn
Următorul bloc de configurare Nginx
locație /cale/la/bo_folder
{
add_header Acces-Control-Permite-Origine *;
rescrie ^(.*)$ /path/to/folder/index.php?$1 ultimul;
}
Problema la care încerc acum să găsesc o soluție mai grațioasă este aceasta - nu am doar un astfel de folder, ci mai degrabă o întreagă secvență a acestora /cale/la/folder_1, /path/to/folder_2... /path/to/folder_n
În timp ce pot pune înăuntru Locație
blocuri pentru fiecare astfel de folder este posibil, este plictisitor și predispus la erori. Există aproape sigur o modalitate de a scrie rescrierea mai generic cu un folder mai sus, adică în /cale/spre
mai degrabă decât pentru fiecare subdosar individual.
Există o complicație minoră aici - nu mă pot descurca prin rescrierea în a /cale/la/index.php
folder, deoarece conținutul stub pe care trebuie să-l trimit înapoi este destul de diferit, în funcție de subfolderul în care ar trebui să fie acel conținut.
Cunoștințele mele destul de incomplete despre configurația Nginx mă lasă aici. Cum se poate face acest lucru?