/ / "Žiadny vstupný súbor zadaný." došlo k chybe namiesto chyby 404 v NGINX - php, nginx

Chyba „Žiadny vstupný súbor nebol zadaný.“ Sa vyskytla chyba namiesto chyby 404 v NGINX - php, nginx

Č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.

  1. Akákoľvek existujúca adresa URL končiaca príponou „.php“ by sa mala zobraziť ako chyba 404 [funkčná]
  2. Akákoľvek existujúca adresa URL bez prípony „.php“ vykoná súbor [funkčný]
  3. 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ď č. 1

tvoj 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.