Google Cloud Storage 上托管的 Flutter Web 应用程序路由无法正常工作

Routing of flutter web app hosted on Google Cloud Storage is not working

我在 Google 云存储上托管了一个 Flutter 网络应用程序,它工作正常并且可以通过我的子域 app.mydomain.com 访问。总的来说,我对 Google 云存储非常满意,因为它易于部署且托管成本低廉。

不幸的是,路由是个问题。 当我通过应用程序导航到登录页面时,地址栏变为 app.mydomain.com/login 并显示登录页面。但是当我通过浏览器的重新加载按钮重新加载页面时,我看到以下 XML

<Error>
    <Code>NoSuchKey</Code>
    <Message>The specified key does not exist.</Message>
</Error>

我认为这是因为 Google Cloud Storage 想要获取 login 文件夹中的 index.html 文件。但是,存储桶不包含这样的 login 文件夹。

问题:

嗯,我想通了。

如果您密切注意我在问题中发布的 URL,您可能会注意到 URL 缺少通常存在的 # 字符。这是因为我已经从 url_strategy 包中设置了 setPathUrlStrategy()

因此,我的 URL 现在看起来像这样 app.mydomain.com/#/login 而不是使用 app.mydomain.com/login,这导致 Google 云存储正确地将 URL 转发到我的应用程序而不是尝试在存储桶中获取文件或文件夹。