【问题标题】:ngRoute set base url for all routesngRoute 为所有路由设置基本 url
【发布时间】:2013-07-20 01:55:59
【问题描述】:

是否可以向 AngularJS 应用中的所有路由添加 base url?从本质上改变它在服务器上的位置(有点,如果这有意义的话......所以它不会通过/ 而是通过/something/ 访问)。

为了添加一些上下文,我正在尝试将现有的 Angular 应用程序放在一些身份验证之后,以便现在可以在成功登录后通过 http://mysite/secure 等地址访问该应用程序。

问题是如果我要在http://mysite/secure 加载应用程序,它可以正常工作(服务器显然会提供正确的页面),但点击任何链接都会导致页面重新加载并路由到http://mysite/#newpage 而不是http://mysite/secure/#newpage.

如果不将/secure/ 添加到所有路由和链接元素,这可能吗?干杯,如果措辞不好,请见谅。

【问题讨论】:

标签: angularjs


【解决方案1】:

设置<base> HTML5 标签可能会有所帮助。来自文档here

相对链接

请务必检查所有相对链接、图像、脚本等。您必须在主 html 文件 (<base href="/my-base">) 的头部指定 url 基址,或者必须在任何地方使用绝对 url(以 / 开头),因为相对urls 将使用文档的初始绝对 url 解析为绝对 url,这通常与应用程序的根目录不同。

强烈建议使用从文档根目录启用的 History API 运行 Angular 应用程序,因为它会处理所有相关链接问题。

【讨论】:

  • 我尝试设置 标记但无法使其工作,文档中的示例似乎甚至没有使用它。根据上面的第二段,我是否可以得出结论,如果不是在我的情况下更新所有链接所需的工作,包括附加路由值会比尝试设置“全局”基本 url 更好吗?
  • 要更新所有链接,使用 angular 声明全局常量并在所有页面中可访问可能会很有用。 stackoverflow.com/a/17505414/574147
  • 我有一个 几乎适用于所有东西。但是,我添加了一个额外的参考,所以我进行如下导入: import { FileUploadModule } from 'primeng/fileupload';一切似乎都在 Visual Studio 中工作,但在运行它时,我得到: GET localhost:59911/src/primeng/fileupload 404 (Not Found) 这是因为基本标签吗?有什么方法可以让导入忽略基本标签,只在 node_modules 中查看它应该的内容?
【解决方案2】:

基本 href 的位置必须以 / 结尾。例如:

<base href="location" />

不会工作。它必须是这种格式:

<base href="location/" />

【讨论】:

  • &lt;base href="/location/" /&gt; 这两个斜线都需要。
  • @VictorPiousbox 在我的应用程序中,当使用“/location/”作为 baseUrl 时,$cookieStore 停止工作(就像我刷新页面时被清除一样)。使用“位置/”有效。不知道为什么。
  • @yngvar,我将我的 Angular 应用程序保留在 Apache2 代理后面,该代理会执行一些 url 重写,也许这是一个原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多