nginx重写没有以.php扩展名结束


nginx rewrite not end with .php extension

我正在使用nginx重写类似
的URLhttp://www.sample.com/applicationhttp://www.sample.com/index.php/application

重写规则是

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

我的fastcgi配置是

location ~ 'index.php {
                fastcgi_split_path_info ^(.+'.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

但重写规则不起作用
我浏览http://www.sample.com/index.php/application也不工作
/application未传递到index.php

它怎么了?

如果从rewrite规则中break,则位置上下文保持不变。您需要使用last而不是break,以便最终找到fastcgi位置。

此外,您的正则表达式规则中有一个多余的反斜杠。可能应该是:

location ~ ^/index.php { ... }