Warm tip: This article is reproduced from serverfault.com, please click

angular-Google Cloud App Engine上的刷新页面抛出404

(angular - Refreshing page on Google Cloud App Engine throws 404)

发布于 2019-02-11 22:08:58

我们已经构建了一个Angular 6应用程序并将其部署到Google Cloud App Engine,该应用程序可以正常运行。但是,每当用除应用程序根目录以外的其他路径刷新浏览器时,我们都会得到404。

这是我们的app.yaml文件:

runtime: nodejs8

handlers:
  - url: /
    static_files: dist/song/index.html
    upload: dist/song/index.html
    secure: always

  - url: /(.*)
    static_files: dist/song/\1
    upload: dist/song/(.*)
    secure: always

  - url: /dashboard
    static_files: dist/song/index.html
    upload: dist/song/index.html
    secure: always

错误为404,提示“找不到处理程序引用的静态文件:song / dashboard / allshoppers”

因此,它正在目录结构中寻找静态文件,但这是我们Angular应用程序中的一条路线。

Questioner
DShultz
Viewed
12
Kenneth 2020-04-03 00:51:29

我遇到了同样的问题,没有运气就尝试了上面的答案。经过大量的试验和错误,我最终获得了下面的app.yaml。该设置适用于我使用Google Cloud Build的设置,以直接部署到Google App Engine。

另外,它还将HTTP请求重定向到HTTPS,并跳过通常不需要的文件。

我确信可能会有更有效的方法来执行此操作,但是一旦我成功了,我就不敢再更改它了。

app.yaml:

runtime: python27
api_version: 1
threadsafe: yes

handlers:
  - url: /(.+\.js)
    static_files: dist/project/\1
    upload: dist/project/(.+\.js)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.css)
    static_files: dist/project/\1
    upload: dist/project/(.+\.css)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.png)
    static_files: dist/project/\1
    upload: dist/project/(.+\.png)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.jpg)
    static_files: dist/project/\1
    upload: dist/project/(.+\.jpg)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.gif)
    static_files: dist/project/\1
    upload: dist/project/(.+\.gif)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.svg)
    static_files: dist/project/\1
    upload: dist/project/(.+\.svg)
    secure: always
    redirect_http_response_code: 301

  - url: /favicon.ico
    static_files: dist/project/favicon.ico
    upload: dist/project/favicon.ico
    secure: always
    redirect_http_response_code: 301

  - url: /(.+\.json)
    static_files: dist/project/\1
    upload: dist/project/(.+\.json)
    secure: always
    redirect_http_response_code: 301

  - url: /(.+)
    static_files: dist/project/index.html
    upload: dist/project/index.html
    secure: always
    redirect_http_response_code: 301

  - url: /
    static_files: dist/project/index.html
    upload: dist/project/index.html
    secure: always
    redirect_http_response_code: 301

skip_files:
  - e2e/
  - node_modules/
  - src/
  - ^(.*/)?\..*$
  - ^(.*/)?.*\.md$
  - ^(.*/)?.*\.yaml$
  - ^LICENSE