前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Nginx] location与rewrite配合处理项目的重写和路径问题

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

作者头像
唯一Chat
发布2020-03-20 11:09:45
1.1K0
发布2020-03-20 11:09:45
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

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

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

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

代码语言:javascript
复制
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; }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档