静态文件丢失

时间:2015-10-31 03:56:43

标签: jquery google-app-engine yaml

在我的应用程序中有一个/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

1 个答案:

答案 0 :(得分:1)

404次请求的[myapp].appspot.com/static/jquery/jquery.js错误是由static_files网址路径下的static_dir网址格式造成的:

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

- url: /static
  static_dir: static

在上面的示例中,/static/(.*\.css)$个匹配项位于/static下方。我猜在GAE基础设施中的静态目录/文件路由在这种情况下会感到困惑。

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

关于Could not guess mimetype错误,此Q& A解释得很清楚:Could not guess mimetype