Nginx compatible framework configuration pathinfo mode & url rewriting mode

Almost all frameworks (ThinkPHP, Zend Framework, CI, Yii, laravel, etc.) will use URL rewriting or pathinfo mode to make URLs look more beautiful. For example, they can hide entry files and are conducive to search engine optimization. In fact, Nginx It is not difficult to support pathinfo or rewrite:.

1: First set cgi.fix_pathinfo=1 in php.ini

2: Then add the configuration file (new version of nginx) as follows:

#pathinfo 支持开始  以上配置信息根据实际情况配置
  fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;    
  fastcgi_param PATH_INFO $fastcgi_path_info;    
  fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;  
#pathinfo 支持结束

All servers 

server
    {
        listen 80 ;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;
        #匹配php脚本扩展名
        location ~ [^/]\.php(/|$)
        {
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;

            #fastcgi相关参数开始  
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            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_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  REQUEST_SCHEME     $scheme;
            fastcgi_param  HTTPS              $https if_not_empty;

            fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

            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;
            fastcgi_param  REDIRECT_STATUS    200;
            fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
            #fastcgi相关参数结束

            #pathinfo开始
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            set $path_info $fastcgi_path_info;
            fastcgi_param PATH_INFO       $path_info;
            try_files $fastcgi_script_name =404;
            #pathinfo结束
        }

        #重写模式开始
        location / {   
                       if (!-e $request_filename){   
                            #rewrite ^(.*)$ /index.php?s=/$1 last;
                            rewrite ^(.*)$ /index.php/$1 last;
                        }
        }
        #重写模式结束
    }

Configure URL rewriting:

location / {   
                       if (!-e $request_filename){   
                            #rewrite ^(.*)$ /index.php?s=/$1 last;
                            rewrite ^(.*)$ /index.php/$1 last;
                        }
    }

 

Guess you like

Origin blog.csdn.net/weixin_45849851/article/details/103027797