tutorial standard engine appengine app google-app-engine static-html

google-app-engine - standard - war web xml



Servir archivo estático usando App Engine (5)

Aquí está app.yaml sobre cómo conseguí que un sitio generado por Jekyll funcionara:

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

He creado una aplicación de App Engine. Hasta ahora, solo tengo unos pocos archivos HTML para servir. ¿Qué puedo hacer para que App Engine sirva el archivo index.html cada vez que alguien visita http://example.appengine.com/ ?

Actualmente, mi archivo app.yaml se ve así:

application: appname version: 1 runtime: python api_version: 1 handlers: - url: / static_dir: static_files


En WEB-INF / web.xml ponemos:

<welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list>


Esto debería hacer lo que necesitas:

https://gist.github.com/873098

Explicación: en App Engine Python es posible usar expresiones regulares como manejadores de URL en app.yaml y redirigir todas las URL a una jerarquía de archivos estáticos.

Ejemplo 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

Para manejar solicitudes a direcciones URL que no terminan con un tipo reconocido ( .html , .png , etc.) o / necesita redirigir esas solicitudes a URL + / para que se sirva el index.html para ese directorio. No conozco una forma de hacer esto dentro de app.yaml , así que agregué un redirector de javascript. Esto también podría hacerse con un pequeño controlador de python.

redirector.html :

<!DOCTYPE html> <html lang="en"> <head> <script language="JavaScript"> self.location=self.location + "/"; </script> </head> <body> </body> </html>


Se podría hacer usando (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


Si está intentando asignar / a index.html :

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

la url: coincidirá en una ruta y admite expresiones regulares.

- url: /images static_dir: static_files/images

Entonces, si su archivo de imagen se almacena en static_files/images/picture.jpg use esto:

<img src="/images/picture.jpg" />