【问题标题】:How to map URL /foo/* to a static file /foo.html on Google App Engine?如何将 URL /foo/* 映射到 Google App Engine 上的静态文件 /foo.html?
【发布时间】:2014-03-15 20:14:40
【问题描述】:

我有一个关于 Google App Engine (Java) 的问题。我想将 URL 模式 /foo/* 映射到一个静态文件 /foo.html(这样请求 /foo/bar/foo/baz 将返回 /foo.html 的内容)。静态文件foo.html 包含基于实际请求 URL 的内容填充页面的 javascript。

我知道如何使用 web.xml 将通配符 URL 映射到 servlet,但我还没有找到任何与静态文件类似的东西。

我的appengine-web.xml<public-root>/static</public-root>

到目前为止,我提出的最佳解决方案是将/foo/* 映射到将foo.html 作为JSP 页面提供服务的servlet。

【问题讨论】:

    标签: jsp google-app-engine servlets


    【解决方案1】:

    你不需要使用servlet,你可以将url模式直接映射到jsp,并且里面只有html:

    <servlet>
        <servlet-name>foo.jsp</servlet-name>
        <jsp-file>/foo.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>foo.jsp</servlet-name>
        <url-pattern>/foo/*</url-pattern>
    </servlet-mapping>
    

    【讨论】:

    【解决方案2】:

    使用以下两种解决方法之一:

    选项 1

    假设您想将 /foo 映射到一个 html 文件...

    1. 在您的webapp 目录中创建一个目录foo

    2. foo目录下创建html文件index.html

    3. 在您的appengine-web.xml 中添加以下内容:

      <static-files>  
        <include path="/foo"/> 
      </static-files>
      

    现在部署并访问/foo,它应该服务于 foo 目录中的 index.html

    选项 2

    如下所述,为 java 使用 app.yaml:https://cloud.google.com/appengine/docs/java/configyaml/appconfig_yaml

    并使用静态文件处理程序:https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Static_file_handlers

    【讨论】:

    • 选项 1 对我有用,而接受的答案不允许使用 .html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2012-07-26
    • 2010-10-23
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多