如何让LNMP支持Thinkphp 等框架的pathinfo
如何让LNMP支持Thinkphp 等框架的pathinfo 最近在弄Thinkphp, nginx不支持pathinfo 在网上找了好多教材都不行。总是报502 的错。我也看了论坛关于502的帖子 度解决不。能不能让LNMP 直接配置好就支持。 更新日志已说http://lnmp.org/changelog.html 加上if (!-e $request_filename) {rewrite^/(.*)$/index.php/$1last;
break;
}能支持index.php隐藏,同时我想使 index.php/XXXX/XXXX 及 admin.php/XXXX/XXXX 也能正常访问,如果处理?烦请军哥赐教,网上查了很多天了,还是无法解决。 pathinfo和rewrite无法同时启用
回复 1# 的帖子
回复楼主,我也是在用 军哥的 lnmp包,关于 thinkphp 的 pathinfo 让nginx 可以支持,
你可以新建一个 vhost,我将我的 贴给你看,你看着位置 进行改动,一定能正常访问的!
分割线下面,均是新建的vhost,默认路径是 /home/wwwroot/ruan
==================================================
server
{
listen 7899;
server_name 119.146.203.247;
index index.html index.htm index.php;
root/home/wwwroot;
location /ruan {
index index.php;
if (!-e $request_filename) {
rewrite ^/ruan/(.*)$ /ruan/index.php/$1 last;
break;
}
}
location ~ .+.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_index index.php?IF_REWRITE=1;
include fcgi.conf;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME /home/wwwroot$fastcgi_script_name;
include fastcgi_params;
}
}
===================================================================
分割线 结束
然后 - 更改php.ini
#vim /usr/local/php/etc/php.ini
找到:cgi.fix_pathinfo
更改为:cgi.fix_pathinfo=1
最后,记得重启 nginx 和 php-fpm 模块
==============================================
对于thinkphp框架项目的访问格式有多种,其中pathinfo是默认的基本访问格式,
格式为:http://hostname:port/index.php/模块名/action名/参数1/参数1的值/
pathinfo其实就是一个参数,
可以通过$_SERVER['PATH_INFO']获得,
thinkphp框架通过解析它来找到对应的模块和方法。
apache服务器默认是支持pathinfo的,但是nginx服务器默认不支持这种格式
谢谢
看文档看文档!
lnmp 1.1 版本已经支持 pathinfo 了!!!添加pathinfo支持,去掉include pathinfo的#,在try_files前加#重启nginx即可使用;
页:
[1]