我目前遇到的问题是当我尝试输入特定路线时,例如:“www.example.com/projects”。然后产生:
错误:未找到
在此服务器上找不到请求的URL /项目。
注意:当通过用户界面导航到该路线时不会发生这种情况,只有在刷新页面或输入特定网址时才会发生这种情况。
有一点要提到的是我正在使用谷歌云平台,我首先使用angular cli设置应用程序。
我已经看到多个事情表明我必须为每条路线提供index.html但是我找不到任何关于如何做到这一点的文档,或者即使这是正确的方法。
我不确定你需要什么才能帮助我解决这个问题所以我会更新你需要帮助的内容。
我的哈希定位策略正在运行,但我正在努力让路径定位策略正常工作。
感谢您的帮助!
答案 0 :(得分:3)
在app.yaml文件中,更新处理程序的正则表达式,如下所示:
- url: /(.*\.(gif|png|jpg|css|js)(|\.map))$
static_files: dist/\1
upload: dist/(.*)(|\.map)
- url: /(.*)
static_files: dist/index.html
upload: dist/index.html
dist文件是cli的静态输出。如果您的应用使用更多,请在第一个处理程序中添加任何文件扩展名。
希望它有效
答案 1 :(得分:2)
我已经在Angular中使用了HashLocationStrategy。在Google云端实例上部署时,我无法在角度应用程序中使用PathLocationStrategy。如果我使用PathLocationStrategy,那么我得到错误:
错误:未找到
在此服务器上找不到请求的URL /项目。
为了实现HashLocationStrategy,我在app.module.ts中只使用了两行代码
import { LocationStrategy, HashLocationStrategy } from '@angular/common';
@NgModule({
providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]
})
export class AppModule
毕竟我已经意识到最好使用angular可用的默认路径策略,即PathLocationStrategy。正如尼古拉斯在上面的回答中所说,我无法在我使用angular-cli v1.4创建的项目结构中找到app.yaml文件
如果有人能在这里引导我朝着正确的方向前进,那就太好了。
答案 2 :(得分:0)
1-您的服务器端应用程序应仅呈现基本路由"/"
以便您的单页应用程序可以处理到/projects
的路由。
2-您也可以通过向客户端路由添加哈希#
前缀来解决此问题,例如"www.example.com/#/projects"
在AngularJs中,您可以通过在config
函数
$locationProvider
.html5Mode(false);
答案 3 :(得分:0)
在路由器模块中添加useHash:true它应该适用于angular 5和java 像这样
@NgModule({
imports: [
RouterModule.forRoot(routes,{useHash:true})
],
答案 4 :(得分:0)
如果您使用的是PathLocationStrategy(HTML5历史记录),则需要有一个处理程序来捕获这些动态路由
runtime: python37
handlers:
# index files
- url: /([^.]+)/?$ # urls with no dot in them
static_files: dist/index.html
upload: dist/index.html
# site root
- url: /
static_files: dist/index.html
upload: dist/index.html
# everything else
- url: /(.*)
static_files: dist/\1
upload: dist/(.*)
https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element