Konfiguracja Nginx, którą mam, rzuca 404 za .php
:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
Jednak w podfolderze mam plik index.php, który chcę uruchomić. Obecna konfiguracja wygląda następująco:
location = /sitename/subpage/index.php {
fastcgi_pass phpcgi; #where phpcgi is defined to serve the php files
}
location = /sitename/subpage2/index.php {
fastcgi_pass phpcgi;
}
location = /sitename/subpage3/index.php {
fastcgi_pass phpcgi;
}
działa idealnie, ale problemem są zduplikowane lokalizacje, a jeśli jest wiele podstron, konfiguracja staje się ogromna.
Próbowałem znaku wieloznacznego jak * i niektóre wyrażenie regularne, co oznacza, że test nginx przeszedł pomyślnie, ale nie ładuje strony, tj. 404. Próbowałem:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
Czy jest jakiś sposób, aby mieć w nazwie jakąś ścieżkę jako wyrażenie regularne lub symbol wieloznaczny?
+
naprawione.Kolejność jest ważna, z opisu „lokalizacji” nginx :
To znaczy:
=
. (dopasowanie „najdłuższy pasujący prefiks”)Musisz dostosować kolejność wyrażeń regularnych.
źródło