所以,基本上我的当前配置如下所示。每当我尝试在没有PHP扩展名的情况下请求URL时,它会下载它吗?
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
有什么想法吗?
答案 0 :(得分:0)
您目前使用的try_files
无效。 try_files
语句的文件元素在同一location
块中处理,这是PHP文件的错误位置。有关详情,请参阅this document。
有许多解决方案,但如果发现脚本文件存在,则可以使用命名位置执行内部重写。
例如:
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。
的使用,请参阅this caution