加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx:try_files找不到静态文件,回到PHP

发布时间:2020-12-13 21:18:17 所属栏目:Nginx 来源:网络整理
导读:相关配置: location /myapp { root /home/me/myapp/www; try_files $uri $uri/ /myapp/index.php?url=$uri$args; location ~ .php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FIL

相关配置:

location /myapp {
    root /home/me/myapp/www;
    try_files $uri $uri/ /myapp/index.php?url=$uri&$args;

    location ~ .php {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include       /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    }
}

我在/ home / me / myapp / www中绝对有一个文件foo.html,但是当我浏览到/myapp/foo.html时,它由PHP处理,这是try_files列表中的最终回退.

为什么会这样?

最佳答案
如果您浏览到/myapp/foo.html,Nginx会检查/home/me/myapp/www/myapp/foo.html上的文件.当它在那里找不到它时,它会继续执行try_files列表中的后备.

如果您需要Nginx来检查/home/me/myapp/www/foo.html上的文件,那么在您的用例中您需要使用别名而不是root.这是解决方案……

location /myapp {
    alias /home/me/myapp/www;
    try_files $uri $uri/ /myapp/index.php?url=$uri&$args;

    location ~ .php {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include       /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    }
}

请注意,有一个longstanding bug别名和try_files不能一起工作.另请注意,使用别名可能会破坏配置的其他部分,例如PHP处理!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读