http://xxx.com/index.php/index/login在nginx服务器访问不了apache lighttpd 都正常的。谁知道怎么弄吗 谢谢了

解决方案 »

  1.   

    开启PATHINFO.. 配置文件:     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         fastcgi_split_path_info ^(.+\.php)(.*)$;
         fastcgi_param PATH_INFO $fastcgi_path_info;
         fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
         if ( $fastcgi_script_name ~ \..*\/.*\.php ) {
            return 403;
         }
      

  2.   

    http://xxx.com/index.php能正常访问啊。不知道为什么不支持这样子访问
    http://xxx.com/index.php/index/login
    2楼的等下试试...
      

  3.   

    location ~ ^(.+\.php)(.*)$ {
    fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    include fcgi.conf;
    }我弄成这样子就可以了。这段代码怎么理解啊像fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    搞不懂...
      

  4.   

    只知道是配置pathinfo的。其他的不知
    像fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    话说这句要改成你自己的php路径吧?
      

  5.   

    我就搞不懂啊。不知有什么用的..
    我系统都没/path/to/php这个目录啊。
    我删了它也没问题。 留着它也没问题
      

  6.   


    /path/to/php  =》path to php
    并不是真正的目录,而是指要换成相应的php的目录。至于这里边哪个配置起作用了,你可以试试注释掉一些,观察是否有效。然后把结果分享给大家。嘿嘿嘿嘿
      

  7.   

    用cgi方式时,每次php请求都由nginx向后端(php-fpm)提交一个CGI网关协议的请求,然后由CGI网关处理php脚本。

    index.php/aaaa
    这种方式的网址,有两种理解方式,一种是目录名为index.php,访问其中的aaaa文件,另外一种是文件名为index.php,aaaa只是作为PATH_INFO。我给出的配置信息的意思就是,让nginx采用第二种方式来解析网址,从而发送正确的参数给CGI网关。
      

  8.   

    至于那行fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    我估计是下面include fcgi.conf;的fcgi.conf中对SCRIPT_FILENAME进行了重新赋值,赋予了正确的文件名。