我有一个angularJs应用程序,它使用$ routeProvider来处理内部路由。后端在Spring Boot应用程序中使用Rest控制器。该应用程序基于:https://spring.io/guides/tutorials/spring-security-and-angular-js/
我想要做的是发送一封包含类似于" http://localhost:8080/link/key1234"的嵌入式链接的电子邮件。用户应该能够单击此按钮,然后转到key1234变量指示的特定内容。
我看过一个类似的项目(Refreshing page gives "Page not found")建议使用.htaccess来处理这个问题,但我目前没有.htaccess文件。
我在[$ locationProvider.html5Mode(true);]
上也有html5mode另一个建议(Spring Boot with AngularJS html5Mode)是拦截请求并重定向到主页。虽然这可以防止应用程序失败,但我需要用户转到特定页面,而不是主页。
我设法对我的不同组件的交互感到非常困惑。你能指出我正确的方向来提供特定的链接吗?
我认为.htaccess文件是一个红色的鲱鱼。
spring.io教程包含以下代码:
@RequestMapping(value = "/{[path:[^\\.]*}")
public String redirect() {
return "forward:/";
}
此细分对部分页面执行重定向。
然而,我的测试(直到最近)一直在使用" http://localhost:8080/public/about"这不是上面的RequestMapping片段。
如果我使用单级网址(例如" http://localhost:8080/test"),那么我现有的代码就可以了。
看起来这个正则表达式存在缺陷。
答案 0 :(得分:1)
当http://localhost:8080/link/key1234
之类的请求命中您的服务器时,您需要将请求转发到主页。然后,客户端应该获得主页的响应,而URL仍然是http://localhost:8080/link/key1234
。然后 html5mode 将在客户端更改视图。
我认为最好的方法可能是使用urlrewrite filter,它应该将除/api/**
之外的所有请求转发到主页。