如何提供到 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/key1234
。 html5mode 将开始播放,改变客户端的 view。
我认为最好的方法可能是使用urlrewrite filter,它应该将除以/api/**
开头的请求之外的所有请求转发到主页。
【讨论】:
谢谢,这对您有很大帮助。 (不幸的是不能投票给答案)以上是关于如何提供到 angularJs 路由页面的特定链接的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS - 登录后路由到不同 ng-app 模块的另一个页面