示例文档说您只需将文件放在 war/ (或子目录)中,它们应该可以从主机访问(只要它们不是 JSP 或 WEB-INF)。例如,如果您将 foo.css 放在 war/ 中,那么您应该可以通过http://localhost:8080/foo.css访问它。但是,这根本不适合我。我的所有静态文件都无法访问。
appengine-web.xml上的文档说您还可以专门将某些类型表示为静态。我也试过这个,它没有任何区别。
我错过了一些明显的东西吗?
更新: 原来我的 web.xml 中的一个映射有点过于激进。以下是罪魁祸首:
<servlet>
<servlet-name>Main</servlet-name>
<servlet-class>MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
似乎它抓住了所有没有被抓住的东西,这是其他规则之一,我不明白,因为 url 模式的末尾没有 *。它似乎也与文档中说的直接矛盾:
注意:静态文件,即逐字提供给用户的文件,例如图像、CSS 或 JavaScript,与部署描述符中提到的路径分开处理。无论部署描述符中的 servlet 和过滤器映射如何,对与 WAR 中被视为静态文件的文件的路径匹配的 URL 路径请求都将为该文件提供服务。您可以使用appengine-web.xml文件从那些被视为静态文件的文件中排除文件。
那么,我怎样才能拥有与我的域的基础匹配的规则(例如http://www.example.com/)并且仍然允许静态文件过滤?