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" />