nginx 不支持 index.php/Module/Controller/Action 这样的 url 路径??

正常情况,Apache 针对:

http://test.com/index.php/Module/Controller/Action

这样的访问路径,其会访问 index.php 文件。

可是 nginx 不是这样的!他把 index.php 当成是目录了!继续查找文件,直到:Action 。。。(不知道是否是这样??),总之就是提示找不到页面..郁闷啊,求大神解决小弟的燃眉之急,,谢谢

阅读 4.3k
2 个回答

昨天太晚了,头有点昏,被楼上误导,没有分清楚pathinfo和伪静态。
在nginx.conf的 server/location标签中,转发请求给php-fpm时预处理一下pathinfo
把pathinfo转化为query-url形式

    location ~ \.php(.*)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }

完整的配置参考:

server {
        listen       80;
        server_name  demo;
        root   "/var/html";
        location / {
            index  index.html index.htm index.php;
            #这个可以把index.php去掉  就是demo.com/module/controller/action的形式
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}

配置rewrite啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题