[Nginx] location与rewrite配合处理项目的重写和路径问题
2023-02-18 15:41:45 时间
某个项目中路由是通过$_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;
}
相关文章
- DDD 领域驱动设计-“臆想”中的实体和值对象
- DDD 领域驱动设计-三个问题思考实体和值对象(续)
- EF Code First 一对多、多对多关联,如何加载子集合?
- Why is HttpContext.Current null after await?
- EntityFramework 如何进行异步化(关键词:async·await·SaveChangesAsync·ToListAsync)
- EntityFramework 如何查看执行的 SQL 代码?
- 小菜学习设计模式(四)—原型(Prototype)模式
- C算法编程题(六)串的处理
- C算法编程题(一)扑克牌发牌
- T-Sql学习系列完结
- T-Sql(六)触发器(trigger)
- T-Sql(五)xml操作
- 小菜的程序员道路(一)
- Spring Cloud Eureka 使用 IP 地址进行服务注册
- 循序渐进VUE+Element 前端应用开发(30)--- ABP后端和Vue+Element前端结合的分页排序处理
- 部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
- ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
- 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理
- 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储
- 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理