nginx重写问题。请求目录重写时本地正常,但宝塔上有一点问题,所有要重写的.php文件直接解析404了,失效,其它文件都可以正常重写,
最怕出这种事情,这类代码有点难看,一般都是看得是懂非懂。折腾了很久。有点心得记录一下。。
1:确定书写无误(测试其它类型文件或url正常能被重写);
2:如果某些特别情况无效,那一定是以被定义过,或是再次定义过,无其它可能。
3:后面代码部分没有找到有冲突的重写,可能之前被单独定义了,图中该行代码,找这个文件enable-php-*.conf
一般位于/www/server/nginx/conf
4:enable-php-72.conf 文件内容如下,果然该中.php被单独搞过
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-72.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
5:重点是引入的pathinfo.conf文件(同一目录位置),打开pathinfo.conf文件
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
#======下面增加代码,把文件重写定义进来,该位置的php文件,也全都用index.php处理=======
if ($fastcgi_script_name ~ "^(\/static\/)(.+?\.php)") {
set $rename index.php;
set $real_script_name $1$rename;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
保存后就见效了。