如何设置 App.yaml 以重定向所有带有 .在他们到Rails应用程序的公共文件夹中的文件?



我在GCP上有一个使用App Engine Ruby标准环境的rails应用程序(尽管这个问题可能适用于任何GCP应用程序(。起初,我试图进行设置,以便/*由我的 Rails 应用程序的public目录中的静态文件处理,否则回退到 Rails 应用程序以获取不匹配的 URL。这似乎是不可能的,但是我突然想到我可以将所有包含.的 url 设置为由public中的静态文件处理(在我的特定应用程序中,这将正常工作(。

我对static_filesupload的文档感到困惑(尤其是 https://cloud.google.com/appengine/docs/standard/ruby/config/appref#handlers_element 示例中有关/1的部分,但这是我app.yaml文件中handlers部分。它不起作用,只是在我扔给它的所有路径上都是 404:

handlers:
- url: /*.*
static_files: public/1
upload: public/*
- url: /.*
secure: always
script: auto

这不起作用,因为所有路径都转到 rails 应用程序,然后在所有静态文件路径上 404s。

这个有相反的问题 - 静态文件工作,但没有路径转到rails应用程序:

handlers:
- url: /*.*
static_dir: public
- url: /.*
secure: always
script: auto

这个有效 - 对@gaefan中的一个选项进行了轻微调整

handlers:
- url: /(.*..*)
static_files: public/1
upload: public/.*..*
- url: /.*
secure: always
script: auto

对于您的第一个示例,我相信括号是必需的,您需要修复您的正则表达式。它应该是这样的:

handlers:
- url: /(.*..*)
static_files: public/1
upload: public/*
- url: /.*
secure: always
script: auto

对于第二个,您的正则表达式中有一个错误。 它应该是:

handlers:
- url: /.*..*
static_dir: public
- url: /.*
secure: always
script: auto

最新更新