[英]Google App Engine service with static files
我有一个app.yaml
文件service
的应用程序,如下所示:
# app.yaml
handlers:
- url: /dist/(.+)
static_files: dist/\1
upload: dist/(.+)
- url: /.*
static_files: dist/index.html
upload: dist/index.html
并且有dispatch.yaml
来添加服务:
# dispatch.yaml
dispatch:
- url: "*/apple/*"
service: apple
但apple
服务本身只是一个带有一些javascript资产的静态html
文件:
# apple.yaml
service: apple
handlers:
- url: /dist/(.+)
static_files: dist/\1
upload: dist/(.+)
- url: /.*
static_files: dist/index.html
upload: dist/index.html
问题是,如果我转到www.example.com/apple
将index.html
引用的main.js
文件作为<script type="text/javascript" src="/dist/main.js"></script>
找不到<script type="text/javascript" src="/dist/main.js"></script>
,而是返回index.html
。
拒绝执行“ https://www.example.com/apple/dist/main.js ”中的脚本,因为其MIME类型(“text / html”)不可执行,并且启用了严格的MIME类型检查。
但如果我直接在https://apple-dot-example.appspot.com/
浏览apple
服务,它就可以了。
显然问题是如何路由静态fils。 由于浏览器向www.example.com/dist/main.js
发出请求,而该文件实际上位于www.example.com/apple/dist/main.js
因此它是404ed。
即使我将脚本更改为<script type="text/javascript" src="/apple/dist/main.js"></script>
,它也不起作用。
我有服务时如何为多个静态目录服务?
问题是你请求的路径实际上是/dist/main.js
,它与apple
服务调度规则模式不匹配: */apple/*
- 因此它被路由到default
服务。
要修复它,您需要:
更新apple.yaml
文件中的模式(BTW应该调用apple
来匹配您的调度服务名称):
# apple.yaml service: apple handlers: - url: /apple/dist/(.+) static_files: dist/\\1 upload: dist/(.+) - url: /.* static_files: dist/index.html upload: dist/index.html
请注意,即使上面的最后一条规则可以匹配任何内容,它也不会在路径中没有*/apple/*
情况下实际获得请求,因为这些规则不会进入apple
服务。
使用更新的路径引用文件,以便调度程序可以将它们路由到apple
服务:
<script type="text/javascript" src="/apple/dist/main.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.