我正在使用nginx重写类似
的URLhttp://www.sample.com/application
至http://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 { ... }