怎么理解 nginx 中 rewrite 的用法

2024-12-01 03:06:36
推荐回答(2个)
回答1:

字面意思就是把abc.com/xxx按abc.com/index.php/xxx来解析
对于/index.php/abc这种url,Apache和lighttpd会按"index.php?abc"来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以一些框架,如CI,在nginx下不配置rewrite是无法运行的,而在Apache和lighttpd则正常。另外,好像nginx里index.php会转换成index_php,(未求证)
解决方法是
location /
{
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
break;
}
}

回答2:

非常好用,很灵活,可以让你的服务器支持更多复杂业务