次の設定をしている場合、/
へのリクエストにより、サーバールートから直接index.php
ファイルがダウンロードされます(つまり、php-fpmに渡されません)。
server {
listen 127.0.0.1:8080;
root /home/hasib/playground/php/;
server_name test.test;
index index.php;
location/{
try_files $uri $uri/index.php =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
しかし、私はこれにtry_filesラインを変更した場合:
try_files $uri $uri/ =404;
その後、/
を要求することにより、私はindex.phpのファイルの予想出力php-の(すなわち、処理された出力を取得していますfpm)。
私はまた、このようなtry_filesでフォルダ名を入れて試してみました:
try_files $uri /myfolder/ =404;
しかし/
を要求するときには、代わりにmyfolder
ディレクトリの下にindex.phpファイルをしようと、/myfolder/
に301リダイレクトを返しています。
私の質問は、$uri/
Nginxの特殊な構文ですか?他の設定は常にファイルを直接処理したり、myfolderにリダイレクトしたりするためです。しかし、$uri/
を含めることによって、index.phpファイルをphp-fpmに渡そうとします。