在angular2 universal上为站点地图设置路线

set route for sitemap on angular2 universal

我们如何设置路由,以便可以通过 URL 访问站点地图:

/sitemap.xml

我的应用路由模块是这样的:-

export function getHomeModule() {
  return System.import('./+home/home.module' + (process.env.AOT ? '.ngfactory' : ''))
    .then(mod => mod[(process.env.AOT ? 'HomeModuleNgFactory' : 'HomeModule')]);
}

@NgModule({
  imports: [
    RouterModule.forRoot([
      { path: '', redirectTo: '/home', pathMatch: 'full' }
    ], {preloadingStrategy: PreloadAllModules})
  ],
})

我正在使用 angular 通用入门套件 Angular Universal Starter Kit

在此处尝试 Tor Helgevord 关于 angular 服务器端呈现和动态站点地图的文章:http://www.syntaxsuccess.com/viewarticle/server-side-rendering-in-angular-2.0

将此添加到 server.ts 文件夹中的 src 文件中:-

app.route('/sitemap.xml')
  .get((req, res) => {
    res.sendFile(path.resolve(path.join(__dirname,'/sitemap.xml')));
  });

更新:

至于Angular通用2.1(around)
server.ts 有以下导入路径

import * as path from 'path';

所以分辨率有点,

const ROOT = path.join(path.resolve(__dirname, '..'));

当前angular通用版本2.6

server.ts 有以下导入路径

import {join} from 'path';

所以分辨率转移到,

const DIST_FOLDER = join(process.cwd(), 'dist');

更新至 Angular 6(通用):

app.route('/sitemap.xml')
  .get((req, res) => {
    res.sendFile(join(DIST_FOLDER,'sitemap.xml'));
  });