对于每个不以 /api 开头的本地 REST 请求,请覆盖并重定向到默认 webapp/index.html。我计划向弹簧控制器提供任何/api。
更新 15/05/2017
让我为其他读者重新表述您的查询。(如果误解,请纠正我)
使用
 Spring Boot 的背景信息,并从类路径提供静态资源
要求
 所有非 api 请求都应重定向到 。404index.html
非 API - 表示 URL 不以 开头的请求。
API - 404 应像往常一样抛出。/api404
示例响应
 - 将引发 
 - 将服务器索引.html
 - 将重定向到/api/something404/index.html/somethingindex.html  
我的解决方案
如果任何处理程序对给定资源不可用,则让 Spring MVC 引发异常。
将以下内容添加到application.properties
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
添加如下ControllerAdvice
@ControllerAdvice
public class RedirectOnResourceNotFoundException {
    @ExceptionHandler(value = NoHandlerFoundException.class)
    public Object handleStaticResourceNotFound(final NoHandlerFoundException ex, HttpServletRequest req, RedirectAttributes redirectAttributes) {
        if (req.getRequestURI().startsWith("/api"))
            return this.getApiResourceNotFoundBody(ex, req);
        else {
            redirectAttributes.addFlashAttribute("errorMessage", "My Custom error message");
            return "redirect:/index.html";
        }
    }
    private ResponseEntity<String> getApiResourceNotFoundBody(NoHandlerFoundException ex, HttpServletRequest req) {
        return new ResponseEntity<>("Not Found !!", HttpStatus.NOT_FOUND);
    }
}
您可以根据需要自定义错误消息。
  有没有办法在所有控制器前面加上api前缀,这样我就不必每次都写api。
为此,您可以创建一个并将请求映射路径设置为BaseController/api
例
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api")
public abstract class BaseController {}
并扩展此内容,并确保不要使用BaseController@RequestMapping
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FirstTestController extends BaseController {
    @RequestMapping(path = "/something")
    public String sayHello() {
        return "Hello World !!";
    }
}
上一个答案
您可以创建一个重定向到 /index 的筛选器.html如果请求路径未启动,则使用 /api。
// CODE REMOVED. Check Edit History If you want.