为什么 Azure 仅在 www.example.com/ROOT 下为我在 Tomcat 9.0.62 中的静态网站提供服务?

问题描述 投票:0回答:1

我有一个非常简单的单页静态网站,存储在

/site/wwwroot/webapps/ROOT/

下的 Azure WebApp 中

Azure 支持各种 Tomcat

选择最新版本的 Tomcat 9(9.0.63,在撰写本文时受 Azure 支持)时,只能通过 www.example.com/ROOT

访问该网站

简单降级到 Tomcat 9.0.54,即可通过 www.example.com 访问该网站

如何让网站在没有

/ROOT
的情况下在 Tomcat 9.0.63 中运行?

  1. 我尝试更改添加配置/应用程序设置

    SERVER_SERVLET_CONTEXT_PATH = /ROOT

  2. 我尝试添加

    <context-param>

    `<param-name>contextPath</param-name>`
    
    `<param-value>/ROOT</param-value>`
    

    </context-param>

WEB-INF/web.xml

我还在这个问题中看到了 Azure 中 Tomcat 9.0.54 和 9.0.62 之间的差异。我还看到 here Microsoft 建议降级到 Tomcat 9.0.54。

azure tomcat azure-web-app-service http-status-code-404
1个回答
0
投票

通常,将 Web 应用程序部署到 Tomcat 容器时,上下文路径决定可访问该应用程序的 URL。如果您想直接访问您的网站而不使用“/ROOT”上下文路径

  • 在 Java Web 应用程序的
    META-INF
    目录中,您可能有一个
    context.xml
    文件(或者您可以创建一个)。添加具有路径属性的上下文元素。

<Context path="" docBase="your-webapp-name" />

配置:

enter image description here

部署到网络应用程序后。转到 设置>配置>路径映射查看虚拟应用程序和目录,将其配置为将根路径(“/”)映射到您的 Web 应用程序。

enter image description here

  • 通过将虚拟路径配置为
    /
    并将其映射到物理路径
    /site/wwwroot/webapps/ROOT/
    ,您可以告诉 Azure 将
    /site/wwwroot/webapps/ROOT/
    目录中的内容视为根 URL 处的 Web 应用程序的内容。当用户访问您网站的 URL 时,Azure 将直接提供
    /site/wwwroot/webapps/ROOT/
    目录中的内容,而不附加任何其他上下文路径(例如“/ROOT”)。
© www.soinside.com 2019 - 2024. All rights reserved.