如何在Href中将斜杠/作为项目号的一部分,避免被识别为目录触发404错误
项目号含斜杠导致URL路由404的解决方案
问题本质是URL路径中的斜杠/默认会被Web服务器识别为路径层级分隔符,导致包含斜杠的项目号被拆分为多个路由参数,无法匹配预设的接口路由,可通过以下两种方案解决:
方案1:URL编码+路由通配符适配
- 前端改造:拼接URL时对项目号做URL编码,将斜杠转义为
%2F,避免被识别为路径分隔符,修改后的代码如下:output += ' | <a href="/Home/UpdateProject/' + encodeURIComponent(result[i].Project_Number) + '" class="label label-warning">Update</a> '; - 后端改造:调整路由配置,通过通配符捕获完整的项目号参数,以ASP.NET系列框架为例,可通过特性路由直接配置:
用全局路由配置的话,对应把参数段修改为[Route("Home/UpdateProject/{*projectNumber}")] public IActionResult UpdateProject(string projectNumber) { // 此处直接拿到解码后的原始项目号,正常处理业务逻辑即可 }{*projectNumber}即可。
方案2:改用查询参数传递项目号(改造成本更低)
不需要调整路由规则,直接把项目号放在查询参数中,查询参数里的斜杠不会被识别为路径分隔符,前端代码修改如下:
output += ' | <a href="/Home/UpdateProject?projectNumber=' + encodeURIComponent(result[i].Project_Number) + '" class="label label-warning">Update</a> ';
后端直接接收projectNumber查询参数即可,主流Web框架都会自动完成URL解码,直接返回原始带斜杠的项目号。
内容的提问来源于stack exchange,提问作者Syed Mohsin
相关产品推荐
相关产品推荐

