[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;
}

posted @   唯一客服系统开发笔记  阅读(1908)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-03-19 [PHP] 工厂模式的日常使用
2019-03-19 [PHP] 抽象类abstract的回顾
2016-03-19 [android] 采用post的方式提交数据
2016-03-19 [android] 采用GET方式提交数据到服务器
点击右上角即可分享
微信分享提示
1
chat with us