静态文件丢失

在我的应用程序中有一个/static文件夹,其中包含应用程序所需的所有静态资源。 这是我的静态资源处理程序:

 - url: /static static_dir: static 

这适用于直接在/static文件,但是假设我还有另一个包含jQuery的文件夹:

 static |- jquery | \- jquery.js | \- images \- ... 

当我尝试访问[myapp].appspot.com/static/jquery/jquery.js ,它将返回404并且我不知道为什么。

我的一些文件,包括.css.ttf等,给我一个Could not guess mimtype错误。 我不知道如何解决这个问题。


编辑

添加了我的(新)app.yaml。 我没有dispatch.yaml。

 version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /static/pages_style mime_type: text/css static_dir: /static/pages_style - url: /static/images/(.*\.(gif|png|jpg))$ static_files: static/images/\1 upload: static/images/.*\.(gif|png|jpg)$ - url: /static/bootstrap 3.3.5 static_dir: /static/bootstrap 3.3.5 - url: /static/jquery 2.1.4 static_dir: /static/jquery 2.1.4 - url: /.* script: myapp.app libraries: - name: webapp2 version: latest - name: jinja2 version: latest 

[myapp].appspot.com/static/jquery/jquery.js请求中的404错误是由static_files URL模式位于static_dir URL路径下引起的:

 - url: /static/(.*\.css)$ static_files: static/\1 upload: static/(.*\.css)$ - url: /static static_dir: static 

在上面的示例中/static/(.*\.css)$匹配位于/static 。 我想GAE infra中的静态目录/文件路由在这种情况下会混淆。

解决方案是使路径更具体,使static_dir URL永远不会包含与static_files URL模式或其他static_dir URL匹配的路径。

关于Could not guess mimetype错误,这个Q&A很好地解释了: 无法猜测mimetype