提问人:Davi Pires 提问时间:11/10/2023 更新时间:11/10/2023 访问量:25
在 Google AppEngine 上提供带有前缀 url 的静态文件
Serving static files on Google AppEngine with a prefixed url
问:
我有一个现有的 GAE 服务(默认),并且我正在添加一个新服务(admin)。这是使用 python3.8、gunicorn 和 flask。
我有一个 dispatch.yaml 文件,用于将请求重定向到新服务。我在新服务中编写 仅响应带有此前缀的 url。/admin
app.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/static
static_dir
相反,只有实际的目录名称才重要。
答:
0赞
NoCommandLine
11/10/2023
#1
你有一个文件,并且希望任何以它开头的内容都由你定义的静态路径处理程序处理。因此,您的 url 路径应该是,您的目录应该是<server>/admin/static/main.css
/admin/static
/admin/static
static/
- url: /admin/static
static_dir: static/
此外,您应该确保,如果您在管理页面上对静态文件使用相对 URL,它们最终会有一个完整的 url,而不是 因为后者用于您的默认服务。<server>/admin/static/main.css
<server>/static/main.css
评论