如何提供angularJs路由页面的特定链接

时间:2015-08-07 09:57:27

标签: angularjs spring-boot angular-ui-router

我有一个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"),那么我现有的代码就可以了。

看起来这个正则表达式存在缺陷。

1 个答案:

答案 0 :(得分:1)

http://localhost:8080/link/key1234之类的请求命中您的服务器时,您需要将请求转发到主页。然后,客户端应该获得主页的响应,而URL仍然是http://localhost:8080/link/key1234。然后 html5mode 将在客户端更改视图

我认为最好的方法可能是使用urlrewrite filter,它应该将除/api/**之外的所有请求转发到主页。