【问题标题】:How to migrate angular-fullstack app to a domain with a base URL如何将 angular-fullstack 应用程序迁移到具有基本 URL 的域
【发布时间】:2015-10-29 05:45:47
【问题描述】:

我有一个相当复杂的问题,因为我最初使用 Yeoman fullstack-angular 生成器开发了一个 MEAN 应用程序,没有基本 URL。在开发中http://localhost:9000/ 工作得很好。

进入生产阶段,我使用具有特定路径 example.com/foo 的反向 Apache 代理来服务 http://localhost:9000。现在,当我加载 example.com/foo 时,我收到一堆 404 错误(当然),因为 example.com/app、example.com/bower_components 不存在。

我在这里有点不合群,没有从哪里开始,我应该查看一些 Express/Angular/etc 配置变量来帮助进行迁移吗?

server/config/express.js 没有产生任何提示,我在 Grunt 文件中找不到任何东西来使wiredep 编译正确的链接。或者甚至有办法在 Apache 中做到这一点......

【问题讨论】:

  • 我在 Apache 文件中的内容是:ProxyPass /foo localhost:9000 ProxyPassReverse /foo localhost:9000 并且它正在为应用程序提供所有文件与 /foo 无关
  • 我认为 proxypassreverse 必须有“proxypassreverse / http://example.com/foo”
  • 另一种测试方法是将其放在 github 页面上。如何?创建一个免费的 github 帐户,然后创建一个名为 (username).github.io 的存储库,它也将是您网站的 url。

标签: angularjs node.js mean-stack yeoman-generator-angular


【解决方案1】:

为了澄清,问题是我需要在基本 URL /foo 后面部署一个 MEAN 应用程序。我这样做:

1) 使用了以下 Apache 规则:

RewriteEngine on
RewriteRule ^/foo/(.*)$ http://localhost:9000/$1 [P]

2) 现在我们只需将所有请求发送到 example.com/foo/whatever。将 index.html 中的基本标记编辑为:

<base href="/foo/" />

3) 将所有 href 和服务调用设为相对而不是绝对(Angular 提供程序使用 &lt;base&gt; 标签)

【讨论】:

  • 第三步你是怎么做的?
  • 这是很久以前的事了,但我认为您只需要从任何链接或 AJAX 调用中的 URL 开头删除开头的 / 即可。 &lt;a href="/my/url"&gt; -> &lt;a href="my/url"&gt;。链接与您在第 2 步中设置的内容相关
  • 谢谢。实际上,它似乎可以通过像这样&lt;a href="./my/url"&gt; 加一个点来工作。你能确认我是否和&lt;a href="my/url"&gt;@一样
猜你喜欢
  • 2019-02-19
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2018-07-31
  • 2022-11-20
  • 2015-09-16
  • 2019-04-10
相关资源
最近更新 更多