• [Nginx] location与rewrite配合处理项目的重写和路径问题


    某个项目中路由是通过$_SERVER['REQUEST_URI']来进行的匹配处理 , 并且隐藏了index.php

    前端路径是http://域名/static/css/xxx.css 而实际路径是位于 /绝对路径/template/static中

    在这样的两种情况下 , 不改代码的条件下使用nginx处理

    server {
            listen       80;
            server_name  xxxx;
            root   /var/www/html/admin;
            location / {
                index  index.php;
            }
            location /static {
                    root /var/www/html/admin/template;
            }
    
            if (!-e $request_filename) {
                    rewrite ^/((?!static).*)$ /index.php/$1 last;
                    break;
            }
            location ~ .php {
    
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #fastcgi_connect_timeout    10s;
                fastcgi_read_timeout        60s;
                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;
            }
    }

    最关键的是location块匹配到static后 ,设置了新的root

    rewrite正则 , 除去了static , 因为单纯的靠!-e $request_filename排除不了 ,因为它路径是404 , 还是会进判断 ,只能靠正则了

    if (!-e $request_filename) {
    rewrite ^/((?!static).*)$ /index.php/$1 last;
    break;
    }

  • 相关阅读:
    上传文件事件并校验:event.target.files && event.target.files[0]
    深浅拷贝
    Git学习
    Flex弹性布局
    hive
    222
    错误总结
    Redis小结2
    spark小结
    kafka详解
  • 原文地址:https://www.cnblogs.com/taoshihan/p/12525022.html
Copyright © 2020-2023  润新知