Dart/Angular 2:页面重新加载时发布服务 404

Dart/Angular 2: Pub serve 404 on page reload

有一些类似的问题,但我还没有找到解决这个问题的方法。

假设我使用

pub serve --port 13371

为了在本地启动我的 Angular 2 / Dart 应用程序。在基本文件中,我有一个这样配置的路由器:

@RouteConfig(const [
  const Route(
      path: '/home',
      name: 'Home',
      component: HomeComponent,
      useAsDefault: true
  ),
  const Route(
      path: '/about',
      name: 'About',
      component: AboutComponent
  )
])
class AppComponent {}

和这样的模板:

    <nav>
      <ul>
        <li>
          <a [routerLink]="['Home']">Home</a>
        </li>
        <li>
          <a [routerLink]="['About']">About</a>
        </li>
      </ul>
    </nav>

在 Dartium 或其他浏览器中,我转到 http://localhost:13371/,这会将我重定向到 http://localhost:13371/home。现在,每当我按 reload 时,我都会收到 404 错误

这是服务器配置的原因。当 angular 更改 URL 时,它知道去哪里以及如何重写 URL。但对于服务器 /home/about 不存在。

但是我的问题是如何配置 pub 以便始终重定向到 index.html 以便我可以刷新并转发到子站点?是否有一些配置要添加到 pubspec.yaml?

或者添加

bootstrap(AppComponent, [
  /* other providers */, 
  provide(LocationStrategy, useClass: HashLocationStrategy),
])

或者使用像Nginx这样支持重写的代理。 pub 本身不以任何方式支持它。

另见 https://pub.dartlang.org/packages/pub_serve_rewrites

不要在路径“/”上使用斜杠。试试这个:

const userRoutes: Routes = [
    { path: 'home', component: HomeComponent, pathMatch: 'full' },
];