如何让任何 url 在 GAE 中使用 app.yaml 为静态文件工作?
How to get any url to work for STATIC FILES with app.yaml in GAE?
我有一个 create-react-app Build 目录,将它放在 Cloud Storage 上,并在其中添加了一个 app.yaml 文件:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: build/index.html
upload: build/index.html
secure: always
- url: /
static_dir: build
托管在 App Engine 上,瞧 - 它有效!
但是,虽然 example-domain.com/ 有效,但 example-domain.com/abc 无效.我收到 错误:未找到
在此服务器上找不到请求的 URL /abc。
我尝试在处理程序 url 中将“/”替换为“/.*”,但结果 returns 是一个空白页:(。
有什么建议吗? :)
首先,/
有重复的处理程序。你永远不会得到第二个处理程序。
您可以在处理程序中使用一些正则表达式来提供任何类型的静态文件,如下所示:
- url: /(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html))$
static_files: build/
upload: build/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html)$
secure: always
找到解决方案。结果是,当我使用 static_dir 时,每个以该处理程序的 url 开头的 url 都包含在内。鉴于每个静态文件都在 build/static 目录中,我只是使用 url: /static 来处理需要从该文件夹处理的任何内容。
Create-react-app 在构建目录中创建了几个 .json 文件,所以我只是单独指向它们,因为只有几个。
完成所有这些后,我可以使用 url: /.*[=22=] 来暗示任何其他 url 应该只指向 index.html页。
这有效:(第一个处理程序可能是多余的)
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: build/index.html
upload: build/index.html
secure: always
- url: /static
static_dir: build/static
- url: /manifest.json
static_files: build/manifest.json
upload: build/manifest.json
- url: /asset-manifest.json
static_files: build/asset-manifest.json
upload: build/asset-manifest.json
- url: /service-worker.json
static_files: build/service-worker.json
upload: build/service-worker.json
- url: /pageIcon.png
static_files: build/pageIcon.png
upload: build/pageIcon.png
- url: /.*
static_files: build/index.html
upload: build/index.html
secure: always
我有一个 create-react-app Build 目录,将它放在 Cloud Storage 上,并在其中添加了一个 app.yaml 文件:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: build/index.html
upload: build/index.html
secure: always
- url: /
static_dir: build
托管在 App Engine 上,瞧 - 它有效!
但是,虽然 example-domain.com/ 有效,但 example-domain.com/abc 无效.我收到 错误:未找到 在此服务器上找不到请求的 URL /abc。
我尝试在处理程序 url 中将“/”替换为“/.*”,但结果 returns 是一个空白页:(。
有什么建议吗? :)
首先,/
有重复的处理程序。你永远不会得到第二个处理程序。
您可以在处理程序中使用一些正则表达式来提供任何类型的静态文件,如下所示:
- url: /(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html))$
static_files: build/
upload: build/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html)$
secure: always
找到解决方案。结果是,当我使用 static_dir 时,每个以该处理程序的 url 开头的 url 都包含在内。鉴于每个静态文件都在 build/static 目录中,我只是使用 url: /static 来处理需要从该文件夹处理的任何内容。
Create-react-app 在构建目录中创建了几个 .json 文件,所以我只是单独指向它们,因为只有几个。
完成所有这些后,我可以使用 url: /.*[=22=] 来暗示任何其他 url 应该只指向 index.html页。
这有效:(第一个处理程序可能是多余的)
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: build/index.html
upload: build/index.html
secure: always
- url: /static
static_dir: build/static
- url: /manifest.json
static_files: build/manifest.json
upload: build/manifest.json
- url: /asset-manifest.json
static_files: build/asset-manifest.json
upload: build/asset-manifest.json
- url: /service-worker.json
static_files: build/service-worker.json
upload: build/service-worker.json
- url: /pageIcon.png
static_files: build/pageIcon.png
upload: build/pageIcon.png
- url: /.*
static_files: build/index.html
upload: build/index.html
secure: always