1

我可以在 Linux 服务计划上将 Angular 部署到 Azure Web 应用程序,并且在点击 {myapp}.azurewebsites.net/index.html 时效果很好

我可以按预期在应用程序内部导航。

当点击根 {myapp}.azurewebsites.net 时,它只显示 hostingstart.html。

按照某些文章中的建议,删除 hostingstart.html 并没有帮助。

如果我尝试直接点击子页面 url(如 {myapp}.azurewebsites.net/mypage),则会收到错误消息:Cannot GET /mypage (这在我本地运行时有效)

我怀疑我需要设置一个默认页面,但我在 Azure Web 应用程序的应用程序设置中的任何地方都找不到它。(我认为这仅适用于 Windows 服务计划,不适用于 Linux 服务计划)。

我如何正确部署到 Linux 应用服务以使其正常工作?

我找到了很多关于这个问题的文章,但它们似乎都涵盖了 Windows 应用服务计划。

4

1 回答 1

2

您需要将 URL 重写规则添加到 Apache 服务器,以便将任何页面请求重定向到 Angular 的index.html

将此粘贴到您的根.htaccess文件中:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

(来源:https ://github.com/angular/angular/issues/11884#issuecomment-288852433 )

编辑:如果使用 node.js 后端,请参阅此 SO 答案以供参考:https ://stackoverflow.com/a/34864585/235648

于 2018-11-14T18:41:33.577 回答