Serve static file using App Engine

后端 未结 5 1237
借酒劲吻你
借酒劲吻你 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:35

    In WEB-INF/web.xml put:

      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    
    0 讨论(0)
  • 2020-12-02 19:41

    It could be done using (app.yaml):

    handlers:
    - url: /appurl
      script: myapp.app
    
    - url: /(.+)
      static_files: staticdir/\1
      upload: staticdir/(.*)
    
    - url: /
      static_files: staticdir/index.html
      upload: staticdir/index.html
    
    0 讨论(0)
  • 2020-12-02 19:47

    If you're trying to map / to index.html:

    handlers:
    - url: /
      upload: folderpath/index.html
      static_files: folderpath/index.html
    

    the url: will match on a path and supports regex.

    - url: /images
      static_dir: static_files/images
    

    So if your image file is stored at static_files/images/picture.jpg use this:

    <img src="/images/picture.jpg" />
    
    0 讨论(0)
  • 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:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <script language="JavaScript">
          self.location=self.location + "/";
        </script>
      </head>
      <body>
      </body>
    </html>
    
    0 讨论(0)
  • 2020-12-02 20:00

    Here is app.yaml for how I got a site generated by Jekyll to work:

    runtime: python27
    api_version: 1
    threadsafe: true
    
    
    handlers:
    - url: /
      static_files: _site/index.html
      upload: _site/index.html
    
    - url: /assets
      static_dir: _site/assets
    
    
    
      # index files
    - url: /(.+)/
      static_files: _site/\1/index.html
      upload: _site/(.+)/index.html
    
    - url: /(.*)
      static_files: _site/\1
      upload: _site/(.*)
    
    - url: /.*
      static_dir: _site
    
    0 讨论(0)
提交回复
热议问题