App.yaml - 单个URL服务多个静态目录
在应用引擎(Python)上,能不能把多个静态文件夹指向同一个网址呢?在我的app.yaml文件里,我希望能像这样做:
尝试 1:
- url: /media/
static_dir: static/.*
尝试 2:
- url: /media/
static_dir: static/dir1
- url: /media/
static_dir: static/dir2
尝试 3:
- url: /media/
static_dir: static/dir1
static_dir: static/dir2
使用“任何东西”的写法(.*)会导致两个文件夹都无法使用。尝试 2 的多次声明只让第一个文件夹(dir1)有效,而第二个文件夹(dir2)被忽略了。尝试 3 在我尝试运行引擎并允许本地运行时,会出现警告。
我该怎么做才能不改变每个新静态文件夹的网址呢?
2 个回答
2
这是不可能的。不过你可以通过链接来实现,比如 /media-1/img.jpg、/media-2/bla.jpg 等等。
- url: /media-(.*?)/(.*)
static_files: static/dir\1/\2
upload: static/(.*?)/(.*)
更多信息请查看 文档。
我觉得唯一的解决办法是使用一个简单的构建脚本,这个脚本会把所有的图片从 /static/dir1 和 /static/dir2 复制到 media 文件夹里。你也可以用这个脚本来实现一键部署。大概是这样的:
import os, glob
source = ['static/dir-1', 'static/dir-2']
dest = 'media'
for s in source:
for f in glob.glob(os.path.join(s, '*.*')):
shutil.copy(f, dest)
1
假设你只是想让所有在'static'文件夹下的内容通过'/media'来访问,这样设置应该没问题:
- url: /media
static_dir: static
编辑 - 在我写这段话的时候,这个具体的配置在这里使用: https://imaginaryboy.appspot.com/media/dir1/text.txt