我有一个带有service
app.yaml
文件的应用,如下所示:
# 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
,main.js
引用的index.html
文件找不到<script type="text/javascript" src="/dist/main.js"></script>
,而index.html
则是apple
返回。
拒绝执行“https://www.example.com/apple/dist/main.js”脚本,因为其MIME类型(“text / html”)不可执行,并且启用了严格的MIME类型检查。
但是,如果我直接在https://apple-dot-example.appspot.com/
浏览www.example.com/dist/main.js
服务,那就可以了。
显然问题是如何路由静态文件。由于浏览器向www.example.com/apple/dist/main.js
发出请求,而该文件实际上位于<script type="text/javascript" src="/apple/dist/main.js"></script>
,因此该文件为404。
即使我将脚本更改为np.array([i for i in range(530)])
,它也不起作用。
如果我有服务,如何为多个静态目录提供服务?
答案 0 :(得分:3)
问题是您请求的路径实际上是/dist/main.js
,它与apple
服务调度规则模式不匹配:*/apple/*
- 因此它被路由到{ {1}}服务。
要解决此问题,您需要:
更新default
文件中的模式(BTW应该调用apple.yaml
以匹配您的调度服务名称):
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