Nginx捕获404错误实现自定义处理方式

需求背景

最近项目在做架构升级,由原来的SSM的单体架构变成前后端分离的项目,原项目使用了大量的动态路由,由于时间原因,我们不能使用VUE等支持动态路由的技术,这就导致之前大量的路径会改变。由于一些页面被做成了二维码,印刷在了纸质文件中。所以这部分功能只能保持原来的路径可以正常访问。

解决思路

新项目的前端是部署在Nginx中的,原有的动态路由继续访问会显示404错误,我们需要通过nginx捕获404错误,将错误的路由变成参数,发送到后台,按照相应规则处理,重定向到对应的页面即可

Nginx对应配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;   
    keepalive_timeout  65;
	proxy_intercept_errors on;   #http全局块捕获异常必须添加
    server {
        listen       80;
        server_name  你的域名;
        location ~/(.*)$ {
            root   html;
            index  index.html index.htm;
			error_page 404 http://你的后台地址?p=$1;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

总结:1.proxy_intercept_errors on; 开启异常捕获
2.使用正则匹配获取url,$1是获取到的路由,作为参数发送给对应的接口

后台处理

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public void f(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //获取路由参数
        String url = request.getQueryString();
        
        //TODO实现你自己的逻辑....
        
        //重定向到对应页面
        response.sendRedirect("https://www.baidu.com");
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值