Nginx загружает файлы PHP при попытке удалить расширение - PullRequest
0 голосов
/ 06 мая 2018

Итак, моя текущая конфигурация, как показано ниже. Всякий раз, когда я пытаюсь запросить URL-адрес без расширения PHP, он загружает его вместо этого?

server {

      listen [::]:80;

      root myDirectory;

      index index.php index.html;

      server_name myDomain;

      location / {
        try_files $uri $uri/ $uri.php $uri.php$is_args$query_string =404;

      }

      location ~\.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
      }

      location ~ /\ ht {
        deny all;
      }

    }

Я уже сделал то, что предлагали многие другие ответы на другие вопросы, такие как редактирование файла php7.1-fpm php.ini:

cgi.fix_pathinfo=0

Есть идеи?

1 Ответ

0 голосов
/ 07 мая 2018

Ваше текущее использование try_files не будет работать.Элементы file оператора try_files обрабатываются в одном и том же блоке location, что является неправильным местом для файлов PHP.См. этот документ для получения дополнительной информации.

Существует несколько решений, но вы можете использовать именованное местоположение для выполнения внутренней перезаписи , еслиОбнаружено, что файл сценария существует.

Например:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    if (-f $document_root$uri.php) { rewrite ^ $uri.php last; }
    return 404;
}
location ~ \.php$ {
    try_files $uri =404;

    include snippets/fastcgi-php.conf;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

См. это предупреждение об использовании if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...