在 Google AppEngine 上提供带有前缀 url 的静态文件

Serving static files on Google AppEngine with a prefixed url

提问人:Davi Pires 提问时间:11/10/2023 更新时间:11/10/2023 访问量:25

问:

我有一个现有的 GAE 服务(默认),并且我正在添加一个新服务(admin)。这是使用 python3.8、gunicorn 和 flask。

我有一个 dispatch.yaml 文件,用于将请求重定向到新服务。我在新服务中编写 仅响应带有此前缀的 url。/adminapp.yaml

目录结构有点凌乱,但如下:

<root>
| app.yaml
| dispatch.yaml
| main.py
| static
| | css
| | | x.css
| | | y.css
| admin
| | admin_service.yaml
| | main.py
| | static
| | | main.css

看起来像这样:admin_service.yaml

runtime: python38
service: admin

handlers:
- url: admin/static
  static_dir: static

- url: /admin/.*
  script: auto

问题是:当我在本地或 GAE 上运行admin_service时,它找不到我的静态资源。请求返回 404,但返回我的文件。但是,这无济于事,因为对此服务的所有请求都必须在前缀下。<server>/admin/static/main.css<server>/static/main.css/admin/

我尝试了许多变体,包括使用相同的问题。static_files

我希望这将被解释为一个前缀,并且之后的所有内容都将被追加以生成资源路径。/admin/staticstatic_dir

相反,只有实际的目录名称才重要。

Flask Google-App-引擎 Gunicorn 静态文件

评论


答:

0赞 NoCommandLine 11/10/2023 #1

你有一个文件,并且希望任何以它开头的内容都由你定义的静态路径处理程序处理。因此,您的 url 路径应该是,您的目录应该是<server>/admin/static/main.css/admin/static/admin/staticstatic/

- url: /admin/static
  static_dir: static/

此外,您应该确保,如果您在管理页面上对静态文件使用相对 URL,它们最终会有一个完整的 url,而不是 因为后者用于您的默认服务。<server>/admin/static/main.css<server>/static/main.css