【问题标题】:How to set "default page" for Angular in Azure Web App on Linux service plan如何在 Linux 服务计划上的 Azure Web App 中为 Angular 设置“默认页面”
【发布时间】:2019-04-17 15:59:31
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: angular deployment azure-web-app-service azure-service-plan


    【解决方案1】:

    您需要向 Apache 服务器添加 URL 重写规则,以便将任何页面请求重定向到 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

    【讨论】:

    • 感谢您的帮助,但没有奏效。 “服务 httpd 状态”表明 apache 没有运行。我相信是 node.js 被用来服务。
    • @TechnoCowboy 那么你必须对 node.js 应用相同的逻辑。一种选择是捕获 404 个请求,然后将它们路由到 Angular 的 index.html - 请参阅这个 SO 答案:stackoverflow.com/a/34864585/235648
    • 谢谢。但我无法让它工作。使用 NGINX 作为基础镜像对应用进行 Docker 化。现在可以了。
    猜你喜欢
    • 2022-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多