我在Google App Engine上部署了Angular 6应用程序。 app.yaml配置看起来像这样:
runtime: python27
api_version: 1
threadsafe: true
skip_files:
- (?!^dist)
handlers:
- url: /
static_files: dist/index.html
upload: dist/index.html
- url: /(.*)
static_files: dist/\1
upload: dist/(.*)
一切正常,我可以访问所有内容,直到在路线上重新加载页面或通过路线直接访问网站(例如,myapp.com / route)。这样,我会收到一条The requested URL /route was not found on this server
错误消息。
答案 0 :(得分:1)
已编译和部署的Angular应用程序包含单个index.html
以及一些资产,例如JavaScript文件。索引文件包含所有JavaScript文件。路由是基于Angulars Router虚拟地执行的,而不是基于实际文件。因此,您的配置无法解析诸如/route
之类的路由。除了资产之外,您还必须将所有请求重定向/重写到index.html
,以便通过Angular路由处理这些请求。
runtime: python27
api_version: 1
threadsafe: true
skip_files:
- (?!^dist)
handlers:
- url: /(.*\.(js|css|svg|png)(|\.map))$
static_files: dist/\1
upload: dist/(.*)(|\.map)
- url: /.*
static_files: dist/index.html
upload: dist/.*
如果要提供的文件更多,请调整正则表达式。
答案 1 :(得分:0)
更新烧瓶服务器,使“ /”和“ / route”都返回您的角度index.html。这样,当GAE / flask返回内容时,angular将处理路由以显示正确的内容。
答案 2 :(得分:-1)
页面刷新显示404 Not Found的原因是所有Angular2路由都应通过index.html文件提供。
您可以通过添加具有以下内容的 .htaccess 文件(在index.html所在的目录中)来解决此问题。
ElementRef