美文网首页
让Nginx支持pathinfo

让Nginx支持pathinfo

作者: ahcj_11 | 来源:发表于2017-08-19 22:46 被阅读133次

    标签(空格分隔): nginx


    nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。

    假如要让 www.linuxeye.com站点支持pathinfo,具体配置如下:

    1 配置server , ~ .php 后面不能有 $ 以便能匹配所有 .php/ 形式的url

    server {
        listen 80;
        server_name demo.local;
        access_log logs/demo.local.log;
        root       /var/www/demo.local;
        error_page 404  /404.html;
        index index.html index.htm index.php ;
        
        location / {
            index index.php;
            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_pathinfo.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;
        }
    }
    

    2 通过设置更改 SCRIPT_FILENAME

    cat fcgi_pathinfo.conf
    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_param SCRIPT_NAME $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 REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT $document_root;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
    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;
    # PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param REDIRECT_STATUS 200;
    

    相关文章

      网友评论

          本文标题:让Nginx支持pathinfo

          本文链接:https://www.haomeiwen.com/subject/oasxdxtx.html