codeigniter框架在nginx下部署背景:新公司要⽤ci框架所以⽹上去下了个ci框架
运⾏index.php⽂件没有问题,但是⼀旦加上路由就出问题了。直接404。
所以怀疑是服务器解析问题,于是去百度了⼀下ci框架跟nginx
结果确实是由于ci框架的这种url⽅式导致
对于/index.php/abc这种url,Apache和Lighttpd会按”index.php?abc”来解释,⽽nginx会认为是请求名
在nginx 配置⾥⾯加⼀段重写url 的代码就⾏了。
server {
listen 80;
server_name localhost;
root /usr/local/var/www/default;
access_log /usr/local/var/log/nginx/default.access.log main;
location / {
nginx 配置文件index index.html index.htm index.php;
autoindex on;
include /usr/local/etc/nginx/php-fpm;
if (!-e $request_filename) {
rewrite ^/(.*)$ /cipro/index.php?$1 last;
break;
}
}
error_page 404 /404.html;
error_page 403 /403.html;
}
Nginx配置⽂件⾥的rewrite规则不是只执⾏⼀次就完事的,是“执⾏⼀遍,假如没有碰到break,就按rewrite后的新路径再执⾏⼀遍,直到不再变化或者遇到break或者执⾏满10次报500错误退出”,所以单纯的⽤⼩知识⼆⾥的重写规则是不⾏的,需要在后⾯加上⼀句break,这样重写⼀遍后就不再执⾏了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论