0

我有 nginx.conf 到fuelphp

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ index.php?/$1 last;
    }
}

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
    include /etc/nginx/fastcgi_params;
}

但这不适用于 testfphp/public/welcome/hello

nginx 说:找不到文件

谢谢你。

4

1 回答 1

0

您似乎混合了来自不同操作方法的不同部分,但没有理解它们。观察:

rewrite ^(.*)$ index.php?/$1 last; #question mark, typo?
location ~ \.php$ # matches end of request_uri
fastcgi_split_path_info ^(.+\.php)(/.+)$; # matches .php followed by a slash

对于要匹配的第三条语句,.php它永远不会位于 request_uri 的末尾,因此该语句将永远不会在此位置匹配。

从第一个语句中删除问号,从位置中删除美元符号。然后加:

fastcgi_param SCRIPT_FILENAME $document_root$ fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_split_pathinfo;

到定位块。尝试从文档中了解并尝试进一步限制位置块。

于 2013-07-16T16:51:35.070 回答