Angular没有找到直接浏览时的路由
Angular routing when directly browsed are not found
所以我定义了一些路由/home, /contact, ...
使用 ng build --prod --base-href
创建 dist 文件夹,并通过 filezilla 将 dist 文件夹的内容复制到托管服务器。直接浏览网站并从网站上重定向时没有问题,但是如果您直接浏览到website/home,则显示404 Not Found The requested URL /home was not found on this server
。
托管支持响应这些可能是在 .htaccess 文件中定义的 CleanURL,我们无法提供支持。
我认为干净的 url 是可读的 restcalls,但也许其意义不仅仅是 rest。但是有解决办法吗?
您更有可能没有在您的提供商中定义 HashLocationStrategy(在 app.module.ts 中)
更新到这里..我试图放入评论但无法格式化
有3种方法
第一种方式
@NgModule({
imports: [
BrowserModule,
FormsModule,..
RouterModule.forRoot(routes, { useHash: true })
],
declarations: [
AppComponent, ...
],
providers: [],
bootstrap: [ AppComponent ]
})
第二种方式
@NgModule({
declarations: [
AppComponent, ...
],
imports: [
AppRoutingModule,
BrowserModule,
BrowserAnimationsModule,
FormsModule,
HttpModule, ...
],
providers: [
{ provide: LocationStrategy, useClass: HashLocationStrategy }
],
entryComponents: [],
bootstrap: [AppComponent]
})
第三种方式 - 推荐用于 Angular2
使用 PathLocationStrategy
import {APP_BASE_HREF} from '@angular/common';
@NgModule({
providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]
})
有利也有弊——我用的是第 2 个,因为我来自 angular1、2、4、5(旧学校):p
所以我定义了一些路由/home, /contact, ...
使用 ng build --prod --base-href
创建 dist 文件夹,并通过 filezilla 将 dist 文件夹的内容复制到托管服务器。直接浏览网站并从网站上重定向时没有问题,但是如果您直接浏览到website/home,则显示404 Not Found The requested URL /home was not found on this server
。
托管支持响应这些可能是在 .htaccess 文件中定义的 CleanURL,我们无法提供支持。
我认为干净的 url 是可读的 restcalls,但也许其意义不仅仅是 rest。但是有解决办法吗?
您更有可能没有在您的提供商中定义 HashLocationStrategy(在 app.module.ts 中)
更新到这里..我试图放入评论但无法格式化
有3种方法 第一种方式
@NgModule({
imports: [
BrowserModule,
FormsModule,..
RouterModule.forRoot(routes, { useHash: true })
],
declarations: [
AppComponent, ...
],
providers: [],
bootstrap: [ AppComponent ]
})
第二种方式
@NgModule({
declarations: [
AppComponent, ...
],
imports: [
AppRoutingModule,
BrowserModule,
BrowserAnimationsModule,
FormsModule,
HttpModule, ...
],
providers: [
{ provide: LocationStrategy, useClass: HashLocationStrategy }
],
entryComponents: [],
bootstrap: [AppComponent]
})
第三种方式 - 推荐用于 Angular2 使用 PathLocationStrategy
import {APP_BASE_HREF} from '@angular/common';
@NgModule({
providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]
})
有利也有弊——我用的是第 2 个,因为我来自 angular1、2、4、5(旧学校):p