Nginx中配置pathinfo模式

今天部署一个php项目,其中遇到一个问题,子页面访问地址是这样的:
example.com/index.php/login 但是不管访问哪个子页面实际展示的都是首页,这让我很郁闷了。然后就找到如下解决方案解决了这个问题。废话不多说,上干货;
网站的配置信息写如下方式:

server
{
   listen 80;
   server_name example.com;
   index index.php;
   root /momodata/www/example;
   location / {        
   if (!-e $request_filename) {
    rewrite  ^/(.*)$  /index.php/$1  last;
    break;
    }
   }
   location ~ \.php {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fcgi.conf;
    set $real_script_name $fastcgi_script_name;
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
      set $real_script_name $1;
      set $path_info $2;
      }
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
  }
}

然后重启nginx;我重启的时候报错了,查看日志提示/etc/nginx/fcgi.conf不存在;
然后我就在该目录下新建了一个fcgi.conf文件,文件内容如下:

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

然后再重启nginx;
重启成功;
再次访问目标网页的时候已经不再跳转首页了,而是我们要看到的目标网页

猜你喜欢

转载自blog.csdn.net/momo_mutou/article/details/81739184
今日推荐