Serve static file using App Engine

后端 未结 5 1236
借酒劲吻你
借酒劲吻你 2020-12-02 18:59

I created an App Engine application. Till now, I only have a few HTML files to serve. What can I do to make App Engine serve the index.html file whenever someone visits http

5条回答
  •  情深已故
    2020-12-02 19:56

    This should do what you need:

    https://gist.github.com/873098

    Explanation: In App Engine Python it's possible to use regular expressions as URL handlers in app.yaml and redirect all URLs to a hierarchy of static files.

    Example app.yaml:

    application: your-app-name-here
    version: 1
    runtime: python
    api_version: 1
    
    handlers:
    - url: /(.*\.css)
      mime_type: text/css
      static_files: static/\1
      upload: static/(.*\.css)
    
    - url: /(.*\.html)
      mime_type: text/html
      static_files: static/\1
      upload: static/(.*\.html)
    
    - url: /(.*\.js)
      mime_type: text/javascript
      static_files: static/\1
      upload: static/(.*\.js)
    
    - url: /(.*\.txt)
      mime_type: text/plain
      static_files: static/\1
      upload: static/(.*\.txt)
    
    - url: /(.*\.xml)
      mime_type: application/xml
      static_files: static/\1
      upload: static/(.*\.xml)
    
    # image files
    - url: /(.*\.(bmp|gif|ico|jpeg|jpg|png))
      static_files: static/\1
      upload: static/(.*\.(bmp|gif|ico|jpeg|jpg|png))
    
    # index files
    - url: /(.+)/
      static_files: static/\1/index.html
      upload: static/(.+)/index.html
    
    # redirect to 'url + /index.html' url.
    - url: /(.+)
      static_files: static/redirector.html
      upload: static/redirector.html
    
    # site root
    - url: /
      static_files: static/index.html
      upload: static/index.html
    

    In order to handle requests to URLs that don't end with a recognized type (.html, .png, etc.) or / you need to redirect those requests to URL + / so the index.html for that directory is served. I don't know of a way to do this inside the app.yaml, so I added a javascript redirector. This could also be done with a tiny python handler.

    redirector.html:

    
    
      
        
      
      
      
    
    

提交回复
热议问题