Čelím rovnakému obávanému „Nie je zadaný vstupný súbor.“ správa v NGINX. Stručný popis toho, čo sa snažím dosiahnuť, je uvedený nižšie.
- Akákoľvek existujúca adresa URL končiaca príponou „.php“ by sa mala zobraziť ako chyba 404 [funkčná]
- Akákoľvek existujúca adresa URL bez prípony „.php“ vykoná súbor [funkčný]
- Akákoľvek neexistujúca adresa URL by mala spôsobiť chybu 404 [nefunguje]. V takom prípade je chyba vyvolaná programom NGINX „Nie je zadaný žiadny vstupný súbor.“
Navštívil som a pokúsil sa implementovať riešenie umiestnené na Nginx + php fastcgi zobrazujúci správu „Nie je zadaný vstupný súbor.“ namiesto 404 ale môj problém sa tým nevyriešil.
Naozaj si nie som istý, ako vykresliť 404 stránku v prípade bodu 3.
Obsah súboru / etc / nginx / sites-enabled / default je uvedený nižšie
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html/example.com;
index index.php index.html index.htm;
server_name example.com;
error_page 404 /error/custom_404;
location / {
try_files $uri $uri/ @missing;
}
location ~ (.php$|myadmin) {
return 404;
}
location @missing {
fastcgi_param SCRIPT_FILENAME "$document_root$uri.php";
fastcgi_param PATH_TRANSLATED "$document_root$uri.php";
fastcgi_param QUERY_STRING $args;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
Majte prosím na pamäti, že som iba začiatočník a nie odborník. Akákoľvek pomoc sa cení.
odpovede:
1 pre odpoveď č. 1tvoj location @missing
blok neurobí nič na overenie existencie súboru pred jeho odovzdaním php-fpm
. Pridajte kontrolu existencie súboru:
location @missing {
if (!-f $document_root$uri.php) { return 404; }
...
}
vidieť v tomto dokumente pre viac a táto opatrnosť o používaní if
.