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

Posted

技术标签:

【中文标题】如何提供到 angularJs 路由页面的特定链接【英文标题】:How to provide a specific link to angularJs routed page 【发布时间】:2015-10-30 17:34:24 【问题描述】:

我有一个 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 sn-p 没有使用它。

如果我使用单级 url(例如“http://localhost:8080/test”),那么我现有的代码可以正常工作。

这个正则表达式似乎有缺陷。

【问题讨论】:

您的客户端是在同一个 Spring Boot 应用程序中运行,还是您正在使用不同的服务器,例如“grunt serve”? 我之所以问这个问题是因为,无论您的客户端在什么服务器上运行,无论是在同一个应用程序上还是在“grunt serve”上,您都需要找到 .htaccess 的等价物。 谢谢桑杰。目前,我的客户端正在通过 Spring Boot 运行。 【参考方案1】:

http://localhost:8080/link/key1234 之类的请求到达您的服务器时,您需要将请求转发到主页。然后,客户端应该会得到主页的响应,而 URL 仍然是http://localhost:8080/link/key1234html5mode 将开始播放,改变客户端的 view

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

【讨论】:

谢谢,这对您有很大帮助。 (不幸的是不能投票给答案)

以上是关于如何提供到 angularJs 路由页面的特定链接的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 登录后路由到不同 ng-app 模块的另一个页面

Angularjs 用户界面路由器。如何重定向到登录页面

angularjs路由path方式实现原理探究

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?

AngularJS 的常用特性

AngularJS正确路由视图但样式表损坏