没有不值得去解决的问题,也没有不值得去学习的技术!

/page-editor/?pageid=1833011727099722 打开响应 200。/page-editor/mobile?pageid=1833011727099722&type=mobile 现在打开响应 404 。要如何解决?

/page-editor/mobile?pageid=1833011727099722&type=mobile 现在打开响应 404

1、/page-editor/?pageid=1833011727099722 打开响应 200。如图1

/page-editor/?pageid=1833011727099722 打开响应 200
图1

2、/page-editor/mobile?pageid=1833011727099722&type=mobile 现在打开响应 404 。如图2

/page-editor/mobile?pageid=1833011727099722&type=mobile 现在打开响应 404
图2

3、现在 目录 backend\web\page-editor 下只有一个 index.html 文件。page-editor 是基于 vue 实现的。现有的 nginx 中配置如下:

Nginx

	# 1. 页面编辑器的 vue history 模式处理
    location /page-editor/ {
        try_files $uri $uri/ /page-editor/index.html;
    }

	# 2. 静态资源支持
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|ttf|woff|woff2|eot|otf)$ {
        try_files $uri =404;
        expires 30d;
        access_log off;
    }

4、Nginx 匹配 /page-editor/mobile 时,不会走 /page-editor/ 这个 location;因为没有 /page-editor/mobile/index.html 或物理路径对应文件,就返回了 404。

5、解决方案:用前缀匹配覆盖子路径。将 Nginx 配置 修改为使用正则匹配 或更宽泛的路径匹配。/page-editor/mobile?pageid=1833011727099722&type=mobile ,响应 200,符合预期。如图3

解决方案:用前缀匹配覆盖子路径。将 Nginx 配置 修改为使用正则匹配 或更宽泛的路径匹配。/page-editor/mobile?pageid=1833011727099722&type=mobile  ,响应 200,符合预期
图3
Nginx

	# Vue history 模式,支持嵌套路由如 /page-editor/mobile
	location ^~ /page-editor/ {
		root C:/wwwroot/official-website-management-system/src/backend/web;  # 确保此处为 index.html 所在目录
		index index.html;
		try_files $uri $uri/ /page-editor/index.html;
	}

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系